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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
In this case name1 and name2 are both ADDR_EXPR rather than SSA_NAMES.
We start with:
```
  <bb 2> [local count: 1073741822]:
  _1 = (long unsigned int) &c_ary[0];
  _2 = _1 & 7;
  if (_2 != 0)
    goto <bb 5>; [34.00%]
  else
    goto <bb 3>; [66.00%]

  <bb 3> [local count: 708669599]:
  _3 = (long unsigned int) &d_ary[0];
  _4 = _3 & 7;
  if (_4 != 0)
```

And ifcombine is trying to optimize it to:
```
  _7 = (unsigned long) &d_ary[0];
  _8 = (unsigned long) &c_ary[0];
  _9 = _7 | _8;
  _10 = _9 & 7;
  if (_10 != 0)
```

Which is what GCC 13 did.

Reply via email to