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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
  d = a | -2;
  b = (d == 0) ? c : (c % d);

d can never be 0, VRP figures this out now.
so we end up with:
d = a | -2;
b = 0xc7d24b5e % d;
if (b != 0xc7d24b5e)
  abort();

and b cannot be 0xc7d24b5e because d is negative :).

So VRP is optimizing this all the way out.

The test was trying to make sure the value 0xc7d24b5e was emitted as a
REG_EQUAL note when splitting up the constant (for the forming) in RTL.

https://gcc.gnu.org/pipermail/gcc-patches/2015-June/422430.html
https://gcc.gnu.org/pipermail/gcc-patches/2015-June/422432.html

Reply via email to