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

Reply via email to