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;
```

Reply via email to