------- Comment #4 from domob at gcc dot gnu dot org 2008-10-04 10:16 ------- The problem is clearly that because of the error the type-bound procedure remains in a somewhat "dubious" state (its pass_arg_num is invalid) and this causes the ICE when resolving an actual call to it afterwards. This is of course easy to fix.
But I wonder about what a subsequent call to the procedure should do, as the PASS could not be resolved... This will then probably generate errors about actual/formal arglist mismatch for correct calls where only the name inside PASS(x) is wrong. Is this ok? The easiest would probably be to take PASS(invalid) as NOPASS or interpret it as PASS without argument name for that matter. Another solution would be to simply ignore calls to such an erraneous procedure in the resolver (and set them to EXEC_NOP for instance to avoid later confusion of gfortran?) which would mean that there is no error checking at all for them; but as this is not possible anyway, maybe that should be the way to go? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37638