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 \

Reply via email to