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