diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-05-14 17:05:27 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-05-15 08:50:17 +0200 |
commit | f12f352350658e039c32a4fd44399d56805c5fb9 (patch) | |
tree | 6e7ac0321211a1b668485fa3ad22ed25a0b3384e /gcc | |
parent | 8018a7eae5b4888f381758e07521627640ec5932 (diff) | |
download | gcc-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.cc | 18 | ||||
-rw-r--r-- | gcc/gimple-ranger.h | 3 |
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); |