[Patch, Fortran, committed] PR 50659: [4.4/4.5/4.6/4.7 Regression] ICE with PROCEDURE statement
Janus Weil
janus@gcc.gnu.org
Sun Oct 9 11:48:00 GMT 2011
Hi all,
I have just committed as obvious a patch for an ICE-on-valid problem
with PROCEDURE statements:
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=179723
The problem was the following: When setting up an external procedure
or procedure pointer (declared via a PROCEDURE statement), we copy the
expressions for the array bounds and string length from the interface
symbol given in the PROCEDURE declaration (cf.
'resolve_procedure_interface'). If those expressions depend on the
actual args of the interface, we have to replace those args by the
args of the new procedure symbol that we're setting up. This is what
'gfc_expr_replace_symbols' / 'replace_symbol' does. Unfortunately we
failed to check whether the symbol we try to replace is actually a
dummy!
Contrary to Andrew's initial assumption, I think the test case is
valid. I could neither find a compiler which rejects it, nor a
restriction in the standard which makes it invalid. The relevant part
of F08 is probably chapter 7.1.11 ("Specification expression"). This
states that a specification expression can contain variables, which
are made accessible via use association.
I'm planning to apply the patch to the 4.6, 4.5 and 4.4 branches soon.
Cheers,
Janus
More information about the Fortran
mailing list