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?

Reply via email to