> The conditional jump instruction formed by instructions
> 56 and 57 above is deleted because GCSE thinks that
> (reg:SI 61 [ p$thread ]) is non-zero.  It comes to this
> conclusion when it propagates the
>    REG_EQUAL (const_int 4294967296 [0x100000000])
> value listed in instruction 25:
>
> (insn 25 24 26 2 (set (reg:SI 61 [ p$thread ])
>         (subreg:SI (reg:TI 70 [ D.2967 ]) 8)) 40 {*movsi_1} (nil)
>     (expr_list:REG_EQUAL (const_int 4294967296 [0x100000000])
>         (nil)))
>
> Note that it takes 33 bits to express 0x100000000, and it won't
> fit into an SImode container.

Then this note is invalid, REG_EQUAL pertains to the destination register:

`REG_EQUIV'
`REG_EQUAL'
     This note is only valid on an insn that sets only one register and
     indicates that that register will be equal to OP at run time; the
     scope of this equivalence differs between the two types of notes.

IOW the culprit is not GCSE but whoever has created this note.

-- 
Eric Botcazou

Reply via email to