diff options
-rw-r--r-- | gcc/gimple-range-path.cc | 8 | ||||
-rw-r--r-- | gcc/value-relation.cc | 6 | ||||
-rw-r--r-- | gcc/value-relation.h | 2 |
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; |