https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54070
--- Comment #23 from neil.n.carlson at gmail dot com --- Here's an even simpler example with the deferred length character array as a local variable -- not a function result or dummy argument. Sure seems as though the allocate statement itself is what is being mishandled: program main character(:), pointer :: s(:) allocate(character(3)::s(2)) s(1) = 'foo'; s(2) = 'bar' print *, s, ' (expect "foobar")' end program Compiles with both 5.2 and 6.0 20151025, but both return the wrong result: barbar (expect "foobar")