This patch set contains the various components that make up a ranger.
Ranger files are prefixed by "gimple-range".
gimple-range-cache.{h,cc} : Various caches used by the ranger.
gimple-range-edge.{h,cc} : Outgoing edge range calculations,
particularly switch edge ranges.
gimple-range-gori.{h,cc} : "Generate Outgoing Range Info" module
which calculates ranges on exit to basic blocks.
gimple-range.{h,cc} : gimple_ranger which pulls together the
other components and provides on-demand ranges.
These are pretty much self contained and do not require changing any
other files.
Consumers need only include "gimple-range.h" and then invoke a ranger
for use within the pass
gimple_ranger ranger;
<..>
if (ranger.range_of_expr (r, name, stmt))
use_range (r);
Follow on patches from Aldy will convert some of the passes will better
demonstrate usage once we're in and running.
I plan to update the documentation over the next couple of weeks.
I will let these patches sit here for a few days, and barring any
issues, will then commit them early next week.
Andrew
* Makefile.in (OBJS): Add gimple-range*.o.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 50d6c83eb76..5a8fb0d7612 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1369,6 +1369,10 @@ OBJS = \
gimple-loop-versioning.o \
gimple-low.o \
gimple-pretty-print.o \
+ gimple-range.o \
+ gimple-range-cache.o \
+ gimple-range-edge.o \
+ gimple-range-gori.o \
gimple-ssa-backprop.o \
gimple-ssa-evrp.o \
gimple-ssa-evrp-analyze.o \