PR middle-end/97172 - ICE: tree code 'ssa_name' is not supported in LTO streams
authorMartin Sebor <msebor@redhat.com>
Wed, 24 Feb 2021 15:57:59 +0000 (08:57 -0700)
committerMartin Sebor <msebor@redhat.com>
Wed, 24 Feb 2021 15:57:59 +0000 (08:57 -0700)
gcc/ChangeLog:
PR middle-end/97172
* attribs.c (attr_access::free_lang_data): Clear attribute arg spec
from function arguments.

gcc/c/ChangeLog:

PR middle-end/97172
* c-decl.c (free_attr_access_data): Clear attribute arg spec.

gcc/testsuite/ChangeLog:

PR middle-end/97172
* gcc.dg/pr97172-2.c: New test.

gcc/attribs.c
gcc/c/c-decl.c
gcc/testsuite/gcc.dg/pr97172-2.c [new file with mode: 0644]

index 60933d2..16c6b12 100644 (file)
@@ -2265,6 +2265,14 @@ attr_access::free_lang_data (tree attrs)
          *pvbnd = NULL_TREE;
        }
     }
+
+  for (tree argspec = attrs; (argspec = lookup_attribute ("arg spec", argspec));
+       argspec = TREE_CHAIN (argspec))
+    {
+      /* Same as above.  */
+      tree *pvblist = &TREE_VALUE (argspec);
+      *pvblist = NULL_TREE;
+    }
 }
 
 /* Defined in attr_access.  */
index a5852a3..b559ed5 100644 (file)
@@ -12166,6 +12166,10 @@ free_attr_access_data ()
   /* Iterate over all functions declared in the translation unit.  */
   FOR_EACH_FUNCTION (n)
     {
+      for (tree parm = DECL_ARGUMENTS (n->decl); parm; parm = TREE_CHAIN (parm))
+       if (tree attrs = DECL_ATTRIBUTES (parm))
+         attr_access::free_lang_data (attrs);
+
       tree fntype = TREE_TYPE (n->decl);
       if (!fntype)
        continue;
diff --git a/gcc/testsuite/gcc.dg/pr97172-2.c b/gcc/testsuite/gcc.dg/pr97172-2.c
new file mode 100644 (file)
index 0000000..6f355bb
--- /dev/null
@@ -0,0 +1,8 @@
+/* PR middle-end/97172 - ICE: tree code ‘ssa_name’ is not supported in LTO
+   streams
+   { dg-do link }
+   { dg-options "-Wall -flto -fpic -shared" }
+   { dg-require-effective-target fpic }
+   { dg-require-effective-target lto } */
+
+#include "pr97172.c"