https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67614
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #3 from kargl at gcc dot gnu.org ---
I'm inclined to close this PR as WONTFIX. The F2008 in
2.4.8 states: "A pointer that is not associated shall
not be referenced or defined." This is not a numbered
constraint and so a Fortran processor is not required
to report an error. It is the programmer's responsibility
to ensure that a referenced pointer is associated.
In addition, consider the code
program y1
real, pointer :: a
real, target :: b
b = 42
a => b
call foo(a)
a => null()
call foo(a)
contains
subroutine foo(x)
real, pointer :: x
if (2*x+1) 10, 20, 30
10 print *, 'a'; goto 40
20 print *, 'b'; goto 40
30 print *, 'c'; goto 40
40 continue
end subroutine
end program y1
The evaluation of the scalar-numeric-expr in the
arithmetic-if would requires a runtime check that
x is in fact an associated pointer. This could
be rather costly and prevent possible optimizations
if gfortran tried to always ensure any reference
to a pointer is properly associated.
It is the responsibility of the programmer to
write
if (associated(x) then
if (2*x+1) 10, 20, 30
...
end if
Of course, if someone wants to add an -fcheck=pointer-status
option, then problems in this PR can be at least checked.