On Thu, 11 Jun 2020, Maciej W. Rozycki wrote:
GCC supports legacy Fortran code, so I have filed PR
fortran/95631 to
track this bug, at: <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95631>.
Let's see what emerges.
So the response from GCC Fortran experts is as follows:
"[...] Yes,
old compiler did dumb things, because it was/is difficult to
detect this violation of the Fortran standards. Note, these
prohibitions are on the programmer.
"F66 8.4.2
"If an actual argument corresponds to a dummy argument that is
defined or redefined in the referenced subprogram, the actual
argument must be a variable name, an array element name, or an
array name.
"F77 15.9.2
"Actual arguments may be constants, symbolic names of constants,
function references, expressions involving operators, and
expressions enclosed in parentheses if and only if the associated
dummy argument is a variable that is not defined during execution
of the referenced external procedure."
My conclusion has therefore been that this must have been a peculiarity
of individual compiler implementations, in particular because numerous
computer systems do not support memory protection and have no way to mark
a segment read-only, and may otherwise either not support instrumentation
at all or it can be disabled for performance reasons. Some implementers
may have indeed gone to great lengths to support this peculiarity to keep
software running that has been written for computer systems affected by
this limitation, but by no means it appears standard in terms of the
language definition.
FWIW,
Maciej