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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Or

bool
irange::symbolic_p () const
{
  return (!varying_p ()
          && !undefined_p ()
          && (!is_gimple_min_invariant (min ())
              || !is_gimple_min_invariant (max ())));
}

which should be simply

bool
irange::symbolic_p () const
{
  return (m_num_ranges == 1
          && (!is_gimple_min_invariant (min ())
              || !is_gimple_min_invariant (max ())));
}

?  Or do we have symbolic anti ranges represented with two ranges?

Likewise

bool
irange::constant_p () const
{
  return (!varying_p ()
          && !undefined_p ()
          && TREE_CODE (min ()) == INTEGER_CST
          && TREE_CODE (max ()) == INTEGER_CST);
}

err - I thought varying == constant...


Note the testcase is fully accounted to

 rest of compilation                : 850.63 ( 97%)   0.12 ( 24%) 864.41 ( 97%)
 4351M ( 96%)

so not sure where it is actually spent.

Reply via email to