https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61767
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |janus at gcc dot gnu.org --- Comment #7 from janus at gcc dot gnu.org --- This alternative patch fixes the ICE as well: Index: gcc/fortran/class.c =================================================================== --- gcc/fortran/class.c (revision 242880) +++ gcc/fortran/class.c (working copy) @@ -2445,7 +2445,8 @@ gfc_find_derived_vtab (gfc_symbol *derived) c->attr.access = ACCESS_PRIVATE; c->tb = XCNEW (gfc_typebound_proc); c->tb->ppc = 1; - generate_finalization_wrapper (derived, ns, tname, c); + if (gfc_is_finalizable (derived, NULL)) + generate_finalization_wrapper (derived, ns, tname, c); /* Add component _deallocate. */ if (!gfc_add_component (vtype, "_deallocate", &c)) @@ -2574,10 +2575,10 @@ gfc_is_finalizable (gfc_symbol *derived, gfc_expr return false; yes: - /* Make sure vtab is generated. */ - vtab = gfc_find_derived_vtab (derived); if (final_expr) { + /* Make sure vtab is generated. */ + vtab = gfc_find_derived_vtab (derived); /* Return finalizer expression. */ gfc_component *final; final = vtab->ts.u.derived->components->next->next->next->next->next; It avoids calling generate_finalization_wrapper for non-finalizable types at all, and thus might even be preferable over the previous patch (provided it regtests fine, which I don't know yet).