aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gimple-range-path.cc8
-rw-r--r--gcc/value-relation.cc6
-rw-r--r--gcc/value-relation.h2
3 files changed, 10 insertions, 6 deletions
diff --git a/gcc/gimple-range-path.cc b/gcc/gimple-range-path.cc
index c99d77d..73e248b 100644
--- a/gcc/gimple-range-path.cc
+++ b/gcc/gimple-range-path.cc
@@ -435,11 +435,10 @@ path_range_query::compute_ranges_in_block (basic_block bb)
e->src->index, e->dest->index);
path_oracle *p = get_path_oracle ();
- p->reset_path ();
// ?? Instead of nuking the root oracle altogether, we could
// reset the path oracle to search for relations from the top of
// the loop with the root oracle. Something for future development.
- p->set_root_oracle (nullptr);
+ p->reset_path ();
}
gori_compute &g = m_ranger->gori ();
@@ -615,7 +614,10 @@ path_range_query::compute_ranges (const vec<basic_block> &path,
compute_exit_dependencies (m_exit_dependencies, m_path);
if (m_resolve)
- get_path_oracle ()->reset_path ();
+ {
+ path_oracle *p = get_path_oracle ();
+ p->reset_path (m_ranger->oracle ());
+ }
if (DEBUG_SOLVER)
{
diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc
index 3f0957c..7fc22d3 100644
--- a/gcc/value-relation.cc
+++ b/gcc/value-relation.cc
@@ -1513,11 +1513,13 @@ path_oracle::query_relation (basic_block bb, tree ssa1, tree ssa2)
return query_relation (bb, equiv_1, equiv_2);
}
-// Reset any relations registered on this path.
+// Reset any relations registered on this path. ORACLE is the root
+// oracle to use.
void
-path_oracle::reset_path ()
+path_oracle::reset_path (relation_oracle *oracle)
{
+ set_root_oracle (oracle);
m_equiv.m_next = NULL;
bitmap_clear (m_equiv.m_names);
m_relations.m_head = NULL;
diff --git a/gcc/value-relation.h b/gcc/value-relation.h
index 77e1208..64884a8 100644
--- a/gcc/value-relation.h
+++ b/gcc/value-relation.h
@@ -242,7 +242,7 @@ public:
relation_kind query_relation (basic_block, tree, tree) final override;
relation_kind query_relation (basic_block, const_bitmap, const_bitmap)
final override;
- void reset_path ();
+ void reset_path (relation_oracle *oracle = NULL);
void set_root_oracle (relation_oracle *oracle) { m_root = oracle; }
void dump (FILE *, basic_block) const final override;
void dump (FILE *) const final override;