https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71723
--- Comment #7 from janus at gcc dot gnu.org --- (In reply to Walter Spector from comment #6) > Your test case in Comment #5 is fine - because it is not attempting to > initialize the pointer at compile time. Initializing a pointer at compile > time is a F2008 feature. I know. But in the end it's just a pointer assignment as well. Why should the rules be so much different? Can you possibly point me to the relevant place in the F08 standard, which allows comment #5, but forbids comment #0? > If I feed my original test case into ifort (v17), I get: > > /tmp/wws> ifort ptr2.f90 > ptr2.f90(10): error #8813: The target must have the TARGET attribute. > [DATA] > integer, pointer :: idata => data%i > -------------------------------^ Well, ok. But just because ifort rejects it, it doesn't necessarily mean that it's valid ;) What does ifort say on the example in comment #5? And what about this example, which is again similar to your original case: program p implicit none type data_t integer :: i = 9 end type type(data_t), target :: d type(data_t), pointer :: dp => d ! integer, pointer :: ip => d%i ! certainly legal integer, pointer :: ip => dp%i ! also legal!?! print *,ip end gfortran again throws an ICE on this, but if I instead use the commented-out line, it works fine.