diff options
author | Andrew Macleod <amacleod@gcc.gnu.org> | 2019-09-10 13:11:19 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 2019-09-10 13:11:19 +0000 |
commit | d0c29df94c513edb2ad7bae0c6d7a7f58455721e (patch) | |
tree | 0be11dc50763fa0566eed219ede8e3c6677c00f6 | |
parent | a9fed1d2bca317c90b59c0af450aa66a490508d6 (diff) | |
download | gcc-devel/ssa-range.zip gcc-devel/ssa-range.tar.gz gcc-devel/ssa-range.tar.bz2 |
even more range_of tweaksdevel/ssa-range
From-SVN: r275590
-rw-r--r-- | gcc/ssa-range-gori.cc | 12 | ||||
-rw-r--r-- | gcc/ssa-range.cc | 15 | ||||
-rw-r--r-- | gcc/ssa-range.h | 6 |
3 files changed, 12 insertions, 21 deletions
diff --git a/gcc/ssa-range-gori.cc b/gcc/ssa-range-gori.cc index a0ab151..d8720cd 100644 --- a/gcc/ssa-range-gori.cc +++ b/gcc/ssa-range-gori.cc @@ -480,14 +480,12 @@ static irange get_tree_range (tree expr, tree name, irange *range_of_name) { static stmt_ranger sr; - if (expr != name || !range_of_name) - { - irange r; - gcc_assert (sr.range_of_expr (r, expr)); - return r; - } + if (expr == name && range_of_name) + return *range_of_name; - return *range_of_name; + irange r; + gcc_assert (sr.range_of_expr (r, expr)); + return r; } // Calculate the range for NAME if the lhs of statement S has the range LHS. diff --git a/gcc/ssa-range.cc b/gcc/ssa-range.cc index 88603a6..6b44470 100644 --- a/gcc/ssa-range.cc +++ b/gcc/ssa-range.cc @@ -267,9 +267,7 @@ stmt_ranger::range_of_phi (irange &r, gphi *phi, tree name, bool stmt_ranger::range_of_call (irange &r, gcall *call, tree name ATTRIBUTE_UNUSED, - const irange *name_range ATTRIBUTE_UNUSED, - gimple *eval_from ATTRIBUTE_UNUSED, - edge on_edge ATTRIBUTE_UNUSED) + const irange *name_range ATTRIBUTE_UNUSED) { tree type = gimple_call_return_type (call); if (!irange::supports_type_p (type)) @@ -295,7 +293,7 @@ stmt_ranger::range_of_call (irange &r, gcall *call, tree name ATTRIBUTE_UNUSED, bool stmt_ranger::range_of_cond_expr (irange &r, gassign *s, tree name, - const irange *name_range, gimple *eval_from) + const irange *name_range) { irange cond_range, range1, range2; tree cond = gimple_assign_rhs1 (s); @@ -308,23 +306,20 @@ stmt_ranger::range_of_cond_expr (irange &r, gassign *s, tree name, if (!irange::supports_type_p (TREE_TYPE (op1))) return false; - if (!eval_from) - eval_from = s; - if (name == cond) cond_range = *name_range; else - gcc_assert (range_of_expr (cond_range, cond, eval_from)); + gcc_assert (range_of_expr (cond_range, cond, s)); if (name == op1) range1 = *name_range; else - gcc_assert (range_of_expr (range1, op1, eval_from)); + gcc_assert (range_of_expr (range1, op1, s)); if (name == op2) range2 = *name_range; else - gcc_assert (range_of_expr (range2, op2, eval_from)); + gcc_assert (range_of_expr (range2, op2, s)); if (cond_range.singleton_p ()) { diff --git a/gcc/ssa-range.h b/gcc/ssa-range.h index 121b149..a64b871 100644 --- a/gcc/ssa-range.h +++ b/gcc/ssa-range.h @@ -59,12 +59,10 @@ protected: const irange *name_range = NULL); bool range_of_call (irange &r, gcall *call, tree name = NULL_TREE, - const irange *name_range = NULL, - gimple *eval_from = NULL, edge on_edge = NULL); + const irange *name_range = NULL); bool range_of_cond_expr (irange &r, gassign* call, tree name = NULL_TREE, - const irange *name_range = NULL, - gimple *eval_from = NULL); + const irange *name_range = NULL); }; class ssa_ranger : public stmt_ranger |