]> git.ipfire.org Git - thirdparty/gcc.git/commit
Add inferred ranges for range-ops based statements.
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 2 May 2024 16:23:18 +0000 (12:23 -0400)
committerAndrew MacLeod <amacleod@redhat.com>
Thu, 23 May 2024 20:48:44 +0000 (16:48 -0400)
commitefc4255d4393cba3d2232a7152799e1b161c3062
tree113ff1de18124d19daa97a8504ebb1520faec95c
parent07441e41f5eb4d385e8ee7cfb50b5d71520bff74
Add inferred ranges for range-ops based statements.

Gimple_range_fold contains some shorthand fold_range routines for
easy user consumption of that range-ops interface, but there is no equivalent
routines for op1_range and op2_range.  This patch provides basic versions.

Any range-op entry which has an op1_range or op2_range implemented can
potentially also provide inferred ranges.  This is a step towards
PR 113879.  Default is currently OFF for performance reasons as it
dramtically increases the number of inferred ranges.

PR tree-optimization/113879
* gimple-range-fold.cc (op1_range): New.
(op2_range): New.
* gimple-range-fold.h (op1_range): New prototypes.
(op2_range): New prototypes.
* gimple-range-infer.cc (gimple_infer_range::add_range): Do not
add an inferred range if it is VARYING.
(gimple_infer_range::gimple_infer_range): Add inferred ranges
for any range-op statements if requested.
* gimple-range-infer.h (gimple_infer_range): Add parameter.
gcc/gimple-range-fold.cc
gcc/gimple-range-fold.h
gcc/gimple-range-infer.cc
gcc/gimple-range-infer.h