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?

Reply via email to