https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114151
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Macleod from comment #5) > (In reply to rguent...@suse.de from comment #4) > > > > > What was definitely missing is consideration of POLY_INT_CSTs (and > > variable polys, as I think there's no range info for those). > > > Ranger doesn't do anything with POLY_INTs, mostly because I didn't > understand them. > > > We do eventually want to improve how ranger behaves here. I'm not sure > > why when we do not provide a context 'stmt' it can't see to compute > > a range valid at the SSA names point of definition? (so basically > > compute the global range) > > The call looks like it doesn't provide the stmt. Without the stmt, all > ranger will ever provide is global ranges. > > I think you are asking why, If there is no global range, it doesn't try to > compute one from the ssa_name_def_stmt? Ranger does when it is active. I tried with an active ranger but that doesn't make a difference. Basically I added enable_ranger () / disable_ranger () around the pass and thought that would "activate" it. But looking at range_for_expr I don't see how that would make a difference without a provided stmt. But maybe I'm doing it wrong?