http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60110

--- Comment #5 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Fri, Feb 07, 2014 at 10:11:17PM +0000, dominiq at lps dot ens.fr wrote:
> It could be a duplicate of pr52332 (ICE at the same place).
> 

It might be.  I've recall other problems of this nature.  Anyway,
here's a further reduction in the testcase

module check_sem

  implicit  none

  type check_logical
    logical  ok
  end type

  interface  assignment( = )
    module procedure check_logical_to_logical
    module procedure logical_to_check_logical
  end interface

  interface check
      module procedure check_character1_rank1
  end interface

  interface operator(**)
    function character_power_sc(l, r)
      character(*), intent(in) :: l, r
      intrinsic  len
      character(len(l)) :: character_power_sc
    end function  character_power_sc
  end interface

  contains

    subroutine check_logical_to_logical(l, r)
      logical, intent(out) :: l
      type( check_logical ), intent(in) :: r
      l = r % ok
    end subroutine check_logical_to_logical

    subroutine logical_to_check_logical(l, r)
      type( check_logical ), intent(out) :: l
      logical, intent(in) :: r
      l % ok = r
    end subroutine logical_to_check_logical

   function check_character1_rank1 (expected, computed)
      character(*,1), dimension(:), intent(in) ::  expected, computed
      type (check_logical) :: check_character1_rank1
      intrinsic all
      check_character1_rank1 = all(computed == expected)
   end function check_character1_rank1

end module check_sem

program foo
  use check_sem
  implicit none
  logical ok
  character :: y(3) = (/ 'a', 'b', 'c' /)
  ok = check(y, (/ y(1)**y(1), y(2)**y(2), y(3)**y(3) /))
end program foo

Reply via email to