aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-06-03 13:29:35 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-06-03 13:29:35 +0200
commit5a8c373b79c1b66dbd9f165d06bdec385df4bf1c (patch)
tree54d873ea312e87c7cb2a8eecd52a854e3e722558
parent77f95085102ca89fe2755d5251617bf08771fc9d (diff)
downloadgcc-5a8c373b79c1b66dbd9f165d06bdec385df4bf1c.zip
gcc-5a8c373b79c1b66dbd9f165d06bdec385df4bf1c.tar.gz
gcc-5a8c373b79c1b66dbd9f165d06bdec385df4bf1c.tar.bz2
Do not call SCEV in loop_ranger::range_of_ssa_name.
This was huge hammer that was calling SCEV for every SSA, and it causes Fortran timeouts because SCEV went into an infinite loop.
-rw-r--r--gcc/gimple-ranger.cc18
-rw-r--r--gcc/gimple-ranger.h4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c2
3 files changed, 2 insertions, 22 deletions
diff --git a/gcc/gimple-ranger.cc b/gcc/gimple-ranger.cc
index d299f07..edc996f 100644
--- a/gcc/gimple-ranger.cc
+++ b/gcc/gimple-ranger.cc
@@ -727,24 +727,6 @@ 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 6d4baf1..f3f5eb6 100644
--- a/gcc/gimple-ranger.h
+++ b/gcc/gimple-ranger.h
@@ -85,9 +85,7 @@ 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);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
index 6d2f870..a5451ad 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
@@ -14,4 +14,4 @@ foo(unsigned int a, unsigned int b, unsigned int c, unsigned int d,
return e;
}
-/* { dg-final { scan-tree-dump-times "return 20;" 1 "reassoc1"} } */
+/* { dg-final { scan-tree-dump-times "= 20" 1 "reassoc1"} } */