[Bug fortran/96013] ICE in write_symbol, at fortran/module.c:5747

kargl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jun 30 21:41:24 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96013

--- Comment #6 from kargl at gcc dot gnu.org ---
With this patch the code compiles:

Index: gcc/fortran/module.c
===================================================================
--- gcc/fortran/module.c        (revision 280157)
+++ gcc/fortran/module.c        (working copy)
@@ -5737,8 +5737,13 @@ write_symbol (int n, gfc_symbol *sym)
 {
   const char *label;

-  if (sym->attr.flavor == FL_UNKNOWN || sym->attr.flavor == FL_LABEL)
-    gfc_internal_error ("write_symbol(): bad module symbol %qs", sym->name);
+  if ((sym->attr.flavor == FL_UNKNOWN || sym->attr.flavor == FL_LABEL)
+      && !(sym->ts.type != BT_UNKNOWN && sym->attr.result))
+    {
+      gfc_error ("Invalid symbol %qs at %L", sym->name,
+                &sym->declared_at);
+      return;
+    }

   mio_integer (&n);


As far as setting 't', one can get a warning with -Wall.
gfcx -Wall -c a.f90
a.f90:5:25:

    5 |    function f() result(t)
      |                         1
Warning: Return value 't' of function 'f' declared at (1) not set
[-Wreturn-typ]

Not sure why this isn't an error (perhaps, false-positives?).


More information about the Gcc-bugs mailing list