https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70673
--- Comment #2 from David Kinniburgh <davidgkinniburgh at yahoo dot co.uk> --- Ah, maybe I reduced this too far as a1 and a2 are obviously uninitialized... Is this better - it also produces an ICE? module m contains subroutine s(in) character(*), intent(in) :: in character(:), allocatable :: a a = in a = a return contains integer function f1() f1 = 0 end function f1 end subroutine s integer function f2(a) character(*), intent(in) :: a character(:), allocatable :: in in = a in = in f2 = 0 end function f2 end module m