> 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