diff options
author | Andrew Macleod <amacleod@gcc.gnu.org> | 2019-09-09 14:31:27 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 2019-09-09 14:31:27 +0000 |
commit | 4ffc00771b08d862541e6746de5022aef0f3dcbb (patch) | |
tree | 460bb34e286c5454d4978dfaf2eab85123d21869 /gcc/ssa-range.cc | |
parent | bca7f559b06d390c93e44164485e02fc1cd84598 (diff) |
range_of_grange tweaks
From-SVN: r275519
Diffstat (limited to 'gcc/ssa-range.cc')
-rw-r--r-- | gcc/ssa-range.cc | 59 |
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. |