aboutsummaryrefslogtreecommitdiff
path: root/gcc/ssa-range.cc
diff options
context:
space:
mode:
authorAndrew Macleod <amacleod@gcc.gnu.org>2019-09-09 14:31:27 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>2019-09-09 14:31:27 +0000
commit4ffc00771b08d862541e6746de5022aef0f3dcbb (patch)
tree460bb34e286c5454d4978dfaf2eab85123d21869 /gcc/ssa-range.cc
parentbca7f559b06d390c93e44164485e02fc1cd84598 (diff)
range_of_grange tweaks
From-SVN: r275519
Diffstat (limited to 'gcc/ssa-range.cc')
-rw-r--r--gcc/ssa-range.cc59
1 files changed, 6 insertions, 53 deletions
diff --git a/gcc/ssa-range.cc b/gcc/ssa-range.cc
index a127384b2ea..e7b8399b277 100644
--- a/gcc/ssa-range.cc
+++ b/gcc/ssa-range.cc
@@ -165,7 +165,7 @@ stmt_ranger::range_of_stmt_with_range (irange &r, gimple *s, tree name,
const irange &name_range)
{
if (is_a<grange *> (s))
- return range_of_grange (r, as_a<grange *> (s), name, name_range);
+ return range_of_grange (r, as_a<grange *> (s), name, &name_range);
if (is_a<gphi *>(s))
return range_of_phi (r, as_a<gphi *> (s), name, &name_range);
if (is_a<gcall *>(s))
@@ -199,36 +199,13 @@ stmt_ranger::range_of_grange_core (irange &r, grange *s, bool valid,
return true;
}
-// Calculate a range for range_op statement S and return it in R. If a range
-// cannot be calculated, return false.
-
-bool
-stmt_ranger::range_of_grange (irange &r, grange *s)
-{
- irange range1, range2;
- bool res = true;
- gcc_checking_assert (irange::supports_type_p (gimple_expr_type (s)));
-
- tree op1 = gimple_range_operand1 (s);
- tree op2 = gimple_range_operand2 (s);
-
- // Calculate a range for operand 1.
- res = range_of_expr (range1, op1, s);
-
- // Calculate a result for op2 if it is needed.
- if (res && op2)
- res = range_of_expr (range2, op2, s);
-
- return range_of_grange_core (r, s, res, range1, range2);
-}
-
// Calculate a range for range_op statement S and return it in R. If any
// operand matches NAME, replace it with NAME_RANGE. If a range
// cannot be calculated, return false.
bool
stmt_ranger::range_of_grange (irange &r, grange *s, tree name,
- const irange &name_range)
+ const irange *name_range)
{
irange range1, range2;
bool res = true;
@@ -239,7 +216,7 @@ stmt_ranger::range_of_grange (irange &r, grange *s, tree name,
// Calculate a range for operand 1.
if (op1 == name)
- range1 = name_range;
+ range1 = *name_range;
else
res = range_of_expr (range1, op1, s);
@@ -247,7 +224,7 @@ stmt_ranger::range_of_grange (irange &r, grange *s, tree name,
if (res && op2)
{
if (op2 == name)
- range2 = name_range;
+ range2 = *name_range;
else
res = range_of_expr (range2, op2, s);
}
@@ -255,30 +232,6 @@ stmt_ranger::range_of_grange (irange &r, grange *s, tree name,
return range_of_grange_core (r, s, res, range1, range2);
}
-// Calculate a range for range_op statement S and return it in R. Evaluate
-// the statement as if it immediately preceeded stmt EVAL_FROM. If a range
-// cannot be calculated, return false.
-
-bool
-stmt_ranger::range_of_grange (irange &r, grange *s, gimple *eval_from)
-{
- irange range1, range2;
- bool res = true;
- gcc_checking_assert (irange::supports_type_p (gimple_expr_type (s)));
-
- tree op1 = gimple_range_operand1 (s);
- tree op2 = gimple_range_operand2 (s);
-
- // Calculate a range for operand 1.
- res = range_of_expr (range1, op1, eval_from);
-
- // Calculate a result for op2 if it is needed.
- if (res && op2)
- res = range_of_expr (range2, op2, eval_from);
-
- return range_of_grange_core (r, s, res, range1, range2);
-}
-
// Calculate a range for phi statement S and return it in R.
// If NAME is non-null, replace any occurences of NAME in arguments with
@@ -312,8 +265,8 @@ stmt_ranger::range_of_phi (irange &r, gphi *phi, tree name,
continue;
if (name == arg)
arg_range = *name_range;
- else if (valid_range_ssa_p (arg) && !eval_from)
- gcc_assert (range_of_expr (arg_range, arg, eval_from));
+ else
+ gcc_assert (range_of_expr (arg_range, arg, eval_from));
r.union_ (arg_range);
// Once the value reaches varying, stop looking.