https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91242
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |aarch64-linux-gnu Status|ASSIGNED |NEW CC| |rsandifo at gcc dot gnu.org Assignee|marxin at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- So it's a real discrepancy in between hash and equal function: This value is being inserted: $ (gdb) p debug_tree(comparable.first) <integer_type 0x7ffff7898d20 public unsigned SI size <integer_cst 0x7ffff76a1f78 type <integer_type 0x7ffff76b20a8 bitsizetype> constant 32> unit-size <integer_cst 0x7ffff76a1f90 type <integer_type 0x7ffff76b2000 sizetype> constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7898d20 precision:32 min <integer_cst 0x7ffff74aae28 0> max <integer_cst 0x7ffff7782ee8 4294967295>> $ (gdb) p *comparable.second $16 = { <poly_int_pod<2, generic_wide_int<wide_int_storage> >> = { coeffs = {{ <wide_int_storage> = { val = {29, 140737488336336, 140737488336432, 12171194, 140737488336536, 140737488337344, 140737488336352, 137438953473, 0}, len = 1, precision = 32 }, members of generic_wide_int<wide_int_storage>: static is_sign_extended = true }, { <wide_int_storage> = { val = {-4, 137438953473, 480890236520, 576, 140737488336448, 137438953473, -17179869184, 137463206123, 140737488336464}, len = 1, precision = 32 }, members of generic_wide_int<wide_int_storage>: static is_sign_extended = true }} }, <No data fields>} with the following hash: (gdb) p hash $17 = 941189640 Existing hash table entry: (gdb) p debug_tree(*entry) <poly_int_cst 0x7ffff74e9de0 type <integer_type 0x7ffff7898d20 public unsigned SI size <integer_cst 0x7ffff76a1f78 constant 32> unit-size <integer_cst 0x7ffff76a1f90 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7898d20 precision:32 min <integer_cst 0x7ffff74aae28 0> max <integer_cst 0x7ffff7782ee8 4294967295>> constant elt0: <integer_cst 0x7ffff74ec2d0 type <integer_type 0x7ffff7898d20> constant 29> elt1: <integer_cst 0x7ffff74dced0 type <integer_type 0x7ffff7898d20> constant 4294967292>> $ (gdb) p Descriptor::hash (*entry) $19 = 1141032448 Richard, can you please take a look?