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