If a relation is available, calculate overflow and normal ranges. Then apply as appropriate. This patch implements operator_plus::op1/op2_range and operator_minus::op1_range to utilize any relation passed into properly reflect the range. If the relation between the LHS and the operand being calculated is one of <,<=,>,>=, then determine what the overflow and normal ranges are for this type, and reflect those in the operand being calculated. With this patch, we can move the testcase for PR 79095 to an evrp test instead of vrp1, so we resolve it much earlier.  This testcase tests various overflow conditions to ensure we can detect and propagate overflow conditions.  ie, it has a series of tests similar to: unsigned f1 (unsigned a, unsigned b) {   b = a + 1;   if (b < a)     {       arf (a, b);       return 42;     }   baz (a, b);   return b; } It tests that 'baz' remains a call using symbolic names, and that 'arf' can be folded to constant arguments. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew