The following i.m.o. correct code lets gfortran crash: module problem implicit none contains !--- subroutine compare_words character(len=1), dimension(:), pointer :: word1 allocate(word1(5)) word1(1:5) = (/ '1','2','3','4','5' /) call print_word(chararray2string(word1)) deallocate(word1) end subroutine compare_words !--- subroutine print_word(word1) character(len=*), intent(in) :: word1 ! input print *,"word1 = ",word1 end subroutine print_word !--- function chararray2string(chararray) result(text) ! #[ character(len=1), dimension(:) :: chararray ! input character(len=size(chararray)) :: text ! output text = transfer(chararray,text) end function chararray2string !--- end module problem program testproblem USE problem, only: compare_words call compare_words end program Testproblem The compiler responds as follows: >gfortran -o problem problem.F90 problem.F90: In function ‘compare_words’: problem.F90:8: internal compiler error: in gfc_conv_function_call, at fortran/trans-expr.c:1107 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. > -- Summary: internal compiler error: in gfc_conv_function_call Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kloedej at knmi dot nl CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23654