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 ();
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)
{
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;
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;