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

--- Comment #8 from Andrew Macleod <amacleod at redhat dot com> ---
in particular:

  _2 = (int) c_8;
  _3 = _2 * 148372120;
  _4 = a.0_1 / _3;
  if (_4 != 0)


we do not wind back thru divides at the moment (unless they are exact divides)
so when processing the false edge to calculate a range for c_8 (which feeds
into a phi eventually)

so when processing 
  [0, 0] = a.0_1 / _3

and trying to calculate a range for _3 , range-ops was returning false,
indicating no further processing should be done (so we wont know anything else
about c_8)

By ignoring that, and continuing to process
  _3 = _2 * 148372120;
with a LHS that was garbage, we were getting some less than ideal results as we
continued back to the cast and figured a value for c_8.

Reply via email to