https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89630
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|jakub at redhat dot com |jason at gcc dot gnu.org
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems like a latent issue before, with the added new ia32 builtins we end up
with lookup_template_class_1 looking up in type_specializations something with
hash
40565706 and have already an entry with the same tmpl and hash 3584195152 in
the table, but both of these % 61 are 35 and so spec_hasher::equal is invoked.
e1->args is
<tree_vec 0x7fffea6336a0 length:1
elt:0 <record_type 0x7fffea642540 A type_0 type_5 type_6 VOID
align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea642540 context <translation_unit_decl 0x7fffea802168 alias-decl-64.C>
full-name "class A<#‘using_decl’ not supported by dump_expr#<expression
error> >"
no-binfo use_template=1 interface-unknown
chain <type_decl 0x7fffea901d10 A>>>
and e2->args is:
<tree_vec 0x7fffea633880 length:1
elt:0 <record_type 0x7fffea642c78 A type_5 VOID
align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea642c78 context <translation_unit_decl 0x7fffea802168 alias-decl-64.C>
full-name "class A<#‘using_decl’ not supported by dump_expr#<expression
error> >"
no-binfo use_template=1 interface-unknown
chain <type_decl 0x7fffea6432f8 A>>>
Both are itself their own canonical types and template_args_equal calls
same_type_p which ICEs on these. Before my r269472 change, DECL_UID of the
*->tmpl was different, so different hashes and we were lucky that those two
weren't compared.
Jason, any ideas?