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 <URL:http://gcc.gnu.org/bugs.html> 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