summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Macleod <amacleod@gcc.gnu.org>2019-09-10 13:11:19 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>2019-09-10 13:11:19 +0000
commitd0c29df94c513edb2ad7bae0c6d7a7f58455721e (patch)
tree0be11dc50763fa0566eed219ede8e3c6677c00f6
parenta9fed1d2bca317c90b59c0af450aa66a490508d6 (diff)
downloadgcc-devel/ssa-range.tar.gz
even more range_of tweaksdevel/ssa-range
From-SVN: r275590
-rw-r--r--gcc/ssa-range-gori.cc12
-rw-r--r--gcc/ssa-range.cc15
-rw-r--r--gcc/ssa-range.h6
3 files changed, 12 insertions, 21 deletions
diff --git a/gcc/ssa-range-gori.cc b/gcc/ssa-range-gori.cc
index a0ab1517192..d8720cd35f7 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 88603a698bc..6b44470caeb 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 121b1499505..a64b8710ff5 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