Committed to the 4.6 branch as r179864: http://gcc.gnu.org/viewcvs?view=revision&revision=179723
Cheers, Janus 2011/10/9 Janus Weil <ja...@gcc.gnu.org>: > 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 >