https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
forwprop3 does:
```
  _12 = ~iftmp.7_30;
  h_40 = (unsigned int) _12;
...
  if (h_40 == 4294967295)
```

into:
```
  _75 = (unsigned int) iftmp.7_30;
  if (iftmp.7_30 == 0)
```

Which as far as I can tell is correct.

And then reassociate2 combines:
```
  <bb 18> [local count: 57431765]:
  if (iftmp.7_30 == 0)
    goto <bb 19>; [97.17%]
  else
    goto <bb 20>; [2.83%]

  <bb 19> [local count: 55807730]:
  if (i_27 != 0)
    goto <bb 20>; [100.00%]
  else
    goto <bb 17>; [0.00%]
```
into:
```
  <bb 18> [local count: 57431765]:
  _75 = iftmp.7_30 | i_27;
  _33 = _75 == 0;
  if (_33 != 0)
    goto <bb 17>; [97.17%]
  else
    goto <bb 19>; [2.83%]
```

or
```
if ((_30 == 0) & (i_27 == 0)) goto <17> else goto <19/20>
```
Which looks correct.
I don't see anything going wrong with the patch itself ...

Reply via email to