The patch switches to a hybrid EVRP pass which utilizes both the Ranger and the classic EVRP pass. it introduces a new undocumented option: -fevrp-mode=   which can be one of the following options evrp-only    : This is classic EVRP mode, identical to whats in trunk now. rvrp-only     : This runs EVRP using *only* the ranger for ranges. *evrp-first *   : This is a hybrid mode, which uses EVRP to satisfy simplifications first, and if that fails, then tries with the ranger rvrp-first     : Another hybrid mode, this time it tries to simplify with the ranger first, then with EVRP. rvrp-trace    : same as rvrp-only, except a lot of tracing information is also dumped to the listing file rvrp-debug   : This is similar to rvrp-trace, except it also include a lot of debug information fo the on-entry caches. trace            :This runs in EVRP-first mode, but turns on tracing in the ranger The default option currently enabled is *evrp_first* This gives us similar functionality to what trunk current has, except its enhanced by trying to use the ranger to find additional cases. We see numerous places where the ranger provides enhanced result, the primary cases are   a) When switches are involved.. we provide very precise ranges to each switch case, including default,  and we see cases where we can eliminate branches due to that   b) We track ranges on edges quite accurately, and are not limited to single entry blocks. In particular we are seeing a number of places where ranges are being propagated into PHIs that were not before: ie, from PR 81192:   if (j_8(D) != 2147483647)     goto ; [50.00%]   else     goto ; [50.00%] :   iftmp.2_11 = j_8(D) + 1; :   # iftmp.2_12 = PHI hybrid mode now recognizes a constant can be propagated into the 3->5 edge and produces   # iftmp.2_12 = PHI <2147483647(3), iftmp.2_11(4)> As a result, we're finding a lot of jump threading opportunities are being exposed earlier. The patch provides 3 EVRP passes, and uses the option to choose which of the 3 are invoked. You can see from the patch how interchangeable we have managed to make the range engines. The goal here is to continue exercising both engines regularly, which making it easy to detect when one engine is better.  when a dump_file is requested for the pass, any time there is a variance in results between the 2 engines will be highlighted by lines such as EVRP:hybrid: RVRP found singleton 3 EVRP:hybrid: EVRP found singleton -1B EVRP:hybrid: Second query simplifed stmt We'll be using these to work on identifying differences/issues  as we move towards replacing EVRP/VRP fully. Andrew