https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89751
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=89707 --- Comment #3 from janus at gcc dot gnu.org --- (In reply to Dominique d'Humieres from comment #1) > The test compiles with the following patch > > --- ../_clean/gcc/fortran/resolve.c 2019-03-18 09:41:55.000000000 +0100 > +++ gcc/fortran/resolve.c 2019-03-18 11:37:56.000000000 +0100 > @@ -13973,7 +13976,7 @@ resolve_component (gfc_component *c, gfc > } > > /* Procedure pointer components: Check PASS arg. */ > - if (c->attr.proc_pointer && !c->tb->nopass && c->tb->pass_arg_num == 0 > + if (c->attr.proc_pointer && c->tb && !c->tb->nopass && > c->tb->pass_arg_num == 0 > && !sym->attr.vtype) > { > gfc_symbol* me_arg; I don't think this is a particularly good idea. One should rather make sure that the tb component is present, e.g. via: diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 749faf9fabe..86beb2c6f2f 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -3737,6 +3737,7 @@ gfc_get_pdt_instance (gfc_actual_arglist *param_list, gfc_symbol **sym, c2->ts = c1->ts; c2->attr = c1->attr; + c2->tb = c1->tb; /* The order of declaration of the type_specs might not be the same as that of the components. */ However this runs into a different ICE :( > However I have no idea if the test is valid or not. I would say it is valid (at least I don't see why it wouldn't be). This is very much related to PR 89707, almost a duplicate.