https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77693
--- Comment #6 from anlauf at gcc dot gnu.org --- I believe this is actually invalid code. One cannot initialize the pointer using the data statement as in the given example. A valid variant (which is accepted and works as expected) is: program p complex, pointer :: a real :: z complex, target :: b = (1.,2.) data a /b/ z = a print *, z end The closest text I can find in F2018 is: 8.4(2): If null-init appears, the initial association status of the object is disassociated. If initial-data-target appears, the object is initially associated with the target. 7.5.4.6(4): If initial-data-target appears for a data pointer component, that component in any object of the type is initially associated with the target or becomes associated with the target as specified in 19.5.2.3. 19.5.2.3 Events that cause pointers to become associated An ice-on-invalid remains, though.