diff options
-rw-r--r-- | gcc/ssa-range.cc | 59 | ||||
-rw-r--r-- | gcc/ssa-range.h | 6 |
2 files changed, 8 insertions, 57 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. diff --git a/gcc/ssa-range.h b/gcc/ssa-range.h index 16c1c0ed05c..b381a4ee09b 100644 --- a/gcc/ssa-range.h +++ b/gcc/ssa-range.h @@ -55,10 +55,8 @@ protected: // Calculate a range for a kind of gimple statement . bool range_of_grange_core (irange &r, grange *s, bool valid, irange &range1, irange &range2); - bool range_of_grange (irange &r, grange *s); - bool range_of_grange (irange &r, grange *s, tree name, - const irange &name_range); - bool range_of_grange (irange &r, grange *s, gimple *eval_from); + bool range_of_grange (irange &r, grange *s, tree name = NULL_TREE, + const irange *name_range = NULL); virtual bool range_of_phi (irange &r, gphi *phi, tree name = NULL_TREE, const irange *name_range = NULL, |