https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92863
--- Comment #2 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- This looks reasonable: Index: misc.c =================================================================== --- misc.c (Revision 279064) +++ misc.c (Arbeitskopie) @@ -164,9 +164,17 @@ gfc_typename (gfc_typespec *ts) sprintf (buffer, "UNION(%s)", ts->u.derived->name); break; case BT_DERIVED: - sprintf (buffer, "TYPE(%s)", ts->u.derived->name); + if (ts->u.derived) + sprintf (buffer, "TYPE(%s)", ts->u.derived->name); + else + sprintf (buffer, "invalid type"); break; case BT_CLASS: + if (ts->u.derived == NULL) + { + sprintf (buffer, "invalid class"); + break; + } ts1 = ts->u.derived->components ? &ts->u.derived->components->ts : NULL; if (ts1 && ts1->u.derived && ts1->u.derived->attr.unlimited_polymorphic) sprintf (buffer, "CLASS(*)");