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.
This commit is contained in:
Martin Sebor 2021-02-24 08:57:59 -07:00
parent 6c35e79b47
commit ea5a82df9b
3 changed files with 20 additions and 0 deletions

View 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. */

View 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;

View File

@ -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"