https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95710
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 ---
Tested against z1.f90.  Untested otherwise.  I don't use CLASSes.

Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (revision 280157)
+++ gcc/fortran/resolve.c       (working copy)
@@ -8798,6 +8798,9 @@ resolve_select (gfc_code *code, bool select_type)
 bool
 gfc_type_is_extensible (gfc_symbol *sym)
 {
+  if (!sym)
+    return false;
+
   return !(sym->attr.is_bind_c || sym->attr.sequence
           || (sym->attr.is_class
               && sym->components->ts.u.derived->attr.unlimited_polymorphic));
@@ -12595,9 +12599,13 @@ resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag)
          && !UNLIMITED_POLY (sym)
          && !gfc_type_is_extensible (CLASS_DATA (sym)->ts.u.derived))
        {
-         gfc_error ("Type %qs of CLASS variable %qs at %L is not extensible",
-                    CLASS_DATA (sym)->ts.u.derived->name, sym->name,
-                    &sym->declared_at);
+         if (CLASS_DATA (sym)->ts.u.derived)
+           gfc_error ("Type %qs of CLASS variable %qs at %L is not
extensible",
+                        CLASS_DATA (sym)->ts.u.derived->name,
+                       sym->name, &sym->declared_at);
+         else
+           gfc_error ("CLASS variable %qs at %L is not extensible",
+                       sym->name, &sym->declared_at);
          return false;
        }

Reply via email to