https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115154
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` Optimizing statement _5 = (<unnamed-signed:1>) _2; LKUP STMT _5 = nop_expr _2 2>>> STMT _5 = nop_expr _2 Optimizing statement _3 = -_5; LKUP STMT _3 = negate_expr _5 2>>> STMT _3 = negate_expr _5 Optimizing statement f.b = _3; Replaced '_3' with constant '0' ``` So Dom decided it was always 0 as -signed:1 is undefined otherwise. The IR is fine in .ccp: ``` _27 = (int) si1_34; _36 = _27 * 5; _29 = (<unnamed-signed:1>) _36; f.b = _29; ``` Then in forwprop it is broken: ``` _32 = (<unnamed-signed:1>) _2; _29 = -_32; f.b = _29; ```