PR c++/84314 - ICE with templates and fastcall attribute.

* attribs.c (build_type_attribute_qual_variant): Remove assert.

From-SVN: r257883
This commit is contained in:
Jason Merrill 2018-02-21 17:12:08 -05:00 committed by Jason Merrill
parent 5d4991da5c
commit a5e2a41f97
3 changed files with 18 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2018-02-21 Jason Merrill <jason@redhat.com>
PR c++/84314 - ICE with templates and fastcall attribute.
* attribs.c (build_type_attribute_qual_variant): Remove assert.
2018-02-21 Jan Hubicka <hubicka@ucw.cz>
* ipa-cp.c (determine_versionability): Fix comment typos.

View File

@ -1155,17 +1155,14 @@ build_type_attribute_qual_variant (tree otype, tree attribute, int quals)
TYPE_CANONICAL. */;
else if (TYPE_STRUCTURAL_EQUALITY_P (ttype)
|| !comp_type_attributes (ntype, ttype))
{
/* If the target-dependent attributes make NTYPE different from
its canonical type, we will need to use structural equality
checks for this type.
/* If the target-dependent attributes make NTYPE different from
its canonical type, we will need to use structural equality
checks for this type.
But make sure we don't get here for stripping attributes from a
type; the no-attribute type might not need structural comparison,
and it should have been in the hash table already. */
gcc_assert (attribute);
SET_TYPE_STRUCTURAL_EQUALITY (ntype);
}
We shouldn't get here for stripping attributes from a type;
the no-attribute type might not need structural comparison. But
we can if was discarded from type_hash_table. */
SET_TYPE_STRUCTURAL_EQUALITY (ntype);
else if (TYPE_CANONICAL (ntype) == ntype)
TYPE_CANONICAL (ntype) = TYPE_CANONICAL (ttype);

View File

@ -0,0 +1,6 @@
// PR c++/84314
// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } }
struct a {
void b(long() __attribute__((fastcall))) {}
};