https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98962
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-02-04 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Component|target |rtl-optimization --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- So we expand from _4 = VIEW_CONVERT_EXPR<unsigned int>(a_3(D)); _2 = _4 ^ 2147483648; _1 = VIEW_CONVERT_EXPR<float>(_2); return _1; resulting in (insn 6 5 7 (parallel [ (set (reg:SI 87) (xor:SI (subreg:SI (reg/v:SF 85 [ a ]) 0) (const_int -2147483648 [0xffffffff80000000]))) (clobber (reg:CC 17 flags)) ]) "z.c":4:20 -1 (nil)) (insn 7 6 8 (set (reg:SF 84 [ <retval> ]) (subreg:SF (reg:SI 87) 0)) "z.c":7:10 -1 (nil)) initial RTL but CSE1 makes (insn 6 3 7 2 (parallel [ (set (reg:SI 87) (plus:SI (subreg:SI (reg/v:SF 85 [ a ]) 0) (const_int -2147483648 [0xffffffff80000000]))) (clobber (reg:CC 17 flags)) ]) "z.c":4:20 209 {*addsi_1} out of this likely removing the possibility that fwprop or combine elide the subregs.