https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103312
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC|kargl at gcc dot gnu.org | --- Comment #2 from kargl at gcc dot gnu.org --- Not regression tested. Allows the code to compile. I don't use CLASS, so have not idea if this is correct. The code in gfc_find_component is set up for only TYPE, UNION, and STRUCT. See the assert. diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index 93118ad3455..997fa0d7848 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -1692,8 +1692,10 @@ generate_finalization_wrapper (gfc_symbol *derived, gfc_namespace *ns, final->attr.artificial = 1; final->attr.always_explicit = 1; final->attr.if_source = expr_null_wrapper ? IFSRC_IFBODY : IFSRC_DECL; - if (ns->proc_name->attr.flavor == FL_MODULE) + + if (ns->proc_name && ns->proc_name->attr.flavor == FL_MODULE) final->module = ns->proc_name->name; + gfc_set_sym_referenced (final); gfc_commit_symbol (final); diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 8c9a1d00ce0..52d47b8b872 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -2492,6 +2492,8 @@ gfc_find_component (gfc_symbol *sym, const char *name, if (sym->attr.flavor == FL_DERIVED) sym = gfc_use_derived (sym); + else if (sym->ts.type == BT_DERIVED) + sym = gfc_use_derived (sym->ts.u.derived); else gcc_assert (gfc_fl_struct (sym->attr.flavor));