mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 21:31:42 +08:00
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:
parent
5d4991da5c
commit
a5e2a41f97
@ -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.
|
||||
|
@ -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);
|
||||
|
||||
|
6
gcc/testsuite/g++.dg/ext/attrib56.C
Normal file
6
gcc/testsuite/g++.dg/ext/attrib56.C
Normal file
@ -0,0 +1,6 @@
|
||||
// PR c++/84314
|
||||
// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } }
|
||||
|
||||
struct a {
|
||||
void b(long() __attribute__((fastcall))) {}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user