[Bug target/94437] Internal compiler error in avr-g++
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 1 13:01:24 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94437
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed on trunk.
7157 loc = type_hash_table->find_slot_with_hash (&in, hashcode, INSERT);
7158 if (*loc)
7159 {
7160 tree t1 = ((type_hash *) *loc)->type;
7161 gcc_assert (TYPE_MAIN_VARIANT (t1) == t1
7162 && t1 != type);
so it looks like the target specific attribute handler wrecks things here.
The code does
static tree
avr_handle_progmem_attribute (tree *node, tree name,
tree args ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED,
bool *no_add_attrs)
{
...
tree newtype = build_type_attribute_variant (type, attr);
TYPE_MAIN_VARIANT (newtype) = TYPE_MAIN_VARIANT (type);
but built_type_attribute_variant builds a distinct copy and inserts it
into the hash, expecting only main variants to be present there. The
above assignment breaks that assumption.
More information about the Gcc-bugs
mailing list