aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-05-14 17:05:27 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-05-15 08:50:17 +0200
commitf12f352350658e039c32a4fd44399d56805c5fb9 (patch)
tree6e7ac0321211a1b668485fa3ad22ed25a0b3384e /gcc
parent8018a7eae5b4888f381758e07521627640ec5932 (diff)
downloadgcc-f12f352350658e039c32a4fd44399d56805c5fb9.zip
gcc-f12f352350658e039c32a4fd44399d56805c5fb9.tar.gz
gcc-f12f352350658e039c32a4fd44399d56805c5fb9.tar.bz2
Add loop_ranger::range_of_ssa_name that calls SCEV.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gimple-ranger.cc18
-rw-r--r--gcc/gimple-ranger.h3
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/gimple-ranger.cc b/gcc/gimple-ranger.cc
index e72805b..042bd96 100644
--- a/gcc/gimple-ranger.cc
+++ b/gcc/gimple-ranger.cc
@@ -727,6 +727,24 @@ loop_ranger::~loop_ranger ()
delete m_vr_values;
}
+// FIXME: Clean-up and/or possibly merge with
+// range_of_ssa_name_with_loop_info.
+
+void
+loop_ranger::range_of_ssa_name (irange &r, tree name, gimple *stmt)
+{
+ super::range_of_ssa_name (r, name, stmt);
+
+ class loop *l;
+ if (stmt && (l = loop_containing_stmt (stmt)))
+ {
+ value_range_equiv vr (TREE_TYPE (name));
+ m_vr_values->adjust_range_with_scev (&vr, l, stmt, name);
+ vr.normalize_symbolics ();
+ r.intersect (vr);
+ }
+}
+
void
loop_ranger::range_of_ssa_name_with_loop_info (irange &r, tree name,
class loop *l, gphi *phi)
diff --git a/gcc/gimple-ranger.h b/gcc/gimple-ranger.h
index f939253..6d4baf1 100644
--- a/gcc/gimple-ranger.h
+++ b/gcc/gimple-ranger.h
@@ -85,6 +85,9 @@ public:
~loop_ranger ();
virtual void range_on_edge (irange &r, edge e, tree name);
virtual bool range_of_phi (irange &r, gphi *phi);
+protected:
+ virtual void range_of_ssa_name (irange &r, tree name,
+ gimple *stmt = NULL) OVERRIDE;
private:
typedef global_ranger super;
bool range_with_loop_info (irange &r, tree name);