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?