aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2021-02-24 08:57:59 -0700
committerMartin Sebor <msebor@redhat.com>2021-02-24 08:57:59 -0700
commitea5a82df9ba0c9d23e386290d24fc920968a8695 (patch)
tree7db76ee52ea00e84163529642ee5a95adbe81c05 /gcc
parent6c35e79b47ab582e18d851f6c5df776bac766eaf (diff)
downloadgcc-ea5a82df9ba0c9d23e386290d24fc920968a8695.zip
gcc-ea5a82df9ba0c9d23e386290d24fc920968a8695.tar.gz
gcc-ea5a82df9ba0c9d23e386290d24fc920968a8695.tar.bz2
PR middle-end/97172 - ICE: tree code 'ssa_name' is not supported in LTO streams
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/attribs.c8
-rw-r--r--gcc/c/c-decl.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr97172-2.c8
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/attribs.c b/gcc/attribs.c
index 60933d2..16c6b12 100644
--- a/gcc/attribs.c
+++ b/gcc/attribs.c
@@ -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. */
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index a5852a3..b559ed5 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -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
index 0000000..6f355bb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr97172-2.c
@@ -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"