This patch adds     --param=vrp-block-limit=N When the basic block counter for a function exceeded 'N' , VRP is invoked with the new fast_vrp algorithm instead.   This algorithm uses a lot less memory and processing power, although it does get a few less things. Primary motivation is cases like https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114855 in which the 3  VRP passes consume about 600 seconds of the compile time, and a lot of memory.      With fast_vrp, it spends less than 10 seconds total in the 3 passes of VRP.     This test case has about 400,000 basic blocks. The default for N in this patch is 150,000,  arbitrarily chosen. This bootstraps, (and I bootstrapped it with --param=vrp-block-limit=0 as well) on x86_64-pc-linux-gnu, with no regressions. What do you think, OK for trunk? Andrew PS sorry,. it doesn't help the threader in that PR :-(