http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45170
--- Comment #20 from kargl at gcc dot gnu.org 2011-08-09 03:48:11 UTC --- (In reply to comment #19) > Comment 9 states that gfortran does not yet support "function result variables > which are character(len=:), pointer". Presumably this also implies a lack of > support for replacing these with allocatable, deferred-length character > variables. I'm adding the case below because it produces an ICE with gfortran > 4.6.1: > > $ cat speaker.F90 > module speaker_class > type speaker > contains > procedure :: speak > end type > contains > function speak(this) > class(speaker) ,intent(in) :: this > character(:) ,allocatable :: speak > end function > subroutine say_something(somebody) > class(speaker) :: somebody > print *,somebody%speak() > end subroutine > end module > > $ gfortran -c speaker.F90 > speaker.F90: In function 'say_something': > speaker.F90:13:0: internal compiler error: in fold_convert_loc, at > fold-const.c:1906 > Please submit a full bug report, > with preprocessed source if appropriate. > See <http://gcc.gnu.org/bugs.html> for instructions. It works fine if you remove all the extraneous garbage in your example. laptop:kargl[217] cat foo.f90 module speaker_class contains function speak() character(:) , allocatable :: speak speak = 'foo' end function end module program foo use speaker_class print *, speak() end program foo laptop:kargl[218] gfc4x -o z foo.f90 && ./z foo