On Fri, May 20, 2022 at 10:17 AM Alexander Monakov <amona...@ispras.ru> wrote: > > On Fri, 20 May 2022, Richard Biener wrote: > > > On Fri, May 20, 2022 at 8:38 AM Alexander Monakov <amona...@ispras.ru> > > wrote: > > > > > > On Fri, 20 May 2022, Richard Biener via Gcc-patches wrote: > > > > > > > > Still waiting for a suggestion, since "side effect" is the description > > > > > that made sense to me :-) > > > > > > > > I think side-effect captures it quite well even if it overlaps with a > > > > term > > > > used in language standards. Doing c = a << b has the side-effect on > > > > imposing a range on 'b' rather than just affecting 'c' (and its range). > > > > You could call it 'alternate effect' but that sounds just awkward ;) > > > > > > I suggest 'deduce', 'deduction', 'deducing a range'. What the code is > > > actually > > > doing is deducing that 'b' in 'a / b' cannot be zero. Function in GCC > > > might be > > > called like 'deduce_ranges_from_stmt'. > > > > So how would you call determining the range of 'c' from the ranges of > > 'a' and 'b', isn't that 'deduction' as well? > > Kind of, yes, but for this sort of forward inference I imagine you're already > using 'propagate [ranges through a stmt]', like in 'value range propagation'. > > If you'd like to avoid 'propagate'/'deduce' asymmetry, I could suggest > 'forward inference' / 'backward inference', but I like it a bit less.
Hmm, maybe "guarantees" - if the stmt executed (without traps) then it's guaranteed that the divisor isn't zero. I've almost said 'assertions' but then asserts also have separate meanings, not to mention ASSERT_EXPR as currently used by the old-style VRP. Richard. > > Alexander