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.