http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57094
--- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-04-30 11:42:49 UTC --- Reduced test for gfortran.dg/transfer_intrinsic_3.f90 module m implicit none contains pure function str_vs(vs) result(s) character, dimension(:), intent(in) :: vs character(len=size(vs)) :: s s = transfer(vs, s) end function str_vs end module m use m implicit none character, dimension(:), pointer :: QName character :: tmp(6) integer :: n allocate(qname(6)) qname = (/ 'a','b','c','d','e','f' /) tmp = str_vs(qname(1:n-1)) print *, tmp end transfer_intrinsic_3_red.f90: In function 'MAIN__': transfer_intrinsic_3_red.f90:19:0: internal compiler error: in lhd_incomplete_type_error, at langhooks.c:203 tmp = str_vs(qname(1:n-1)) Note that the test compiles, but generates a wrong code, without the module: implicit none character, dimension(:), pointer :: QName character :: tmp(6) integer :: n allocate(qname(6)) qname = (/ 'a','b','c','d','e','f' /) tmp = str_vs(qname(1:n-1)) print *, tmp contains pure function str_vs(vs) result(s) character, dimension(:), intent(in) :: vs character(len=size(vs)) :: s s = transfer(vs, s) end function str_vs end