diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2024-04-30 09:35:23 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2024-05-23 16:45:53 -0400 |
commit | 3be530f6d77ec24c94589341b069b199cfe6c2eb (patch) | |
tree | d1c1561e97272858cd32304998b5da993208ce58 /gcc/gimple-range-path.cc | |
parent | 67afcf28570ff62210e1998f35def2be5cb8cb08 (diff) | |
download | gcc-3be530f6d77ec24c94589341b069b199cfe6c2eb.zip gcc-3be530f6d77ec24c94589341b069b199cfe6c2eb.tar.gz gcc-3be530f6d77ec24c94589341b069b199cfe6c2eb.tar.bz2 |
Move to an always available relation oracle.
This eliminates the need to check if the relation oracle pointer is NULL
before every call by providing a default oracle which does nothing.
REmove unused routines, and Unify register_relation method names.
* gimple-range-cache.cc (ranger_cache::dump_bb): Remove check for
NULL oracle pointer.
(ranger_cache::fill_block_cache): Likewise.
* gimple-range-fold.cc (fur_stmt::get_phi_operand): Likewise.
(fur_depend::fur_depend): Likewise.
(fur_depend::register_relation): Likewise, use qury_relation.
(fold_using_range::range_of_phi): Likewise.
(fold_using_range::relation_fold_and_or): Likewise.
* gimple-range-fold.h (fur_source::m_oracle): Delete. Oracle
can be accessed dirctly via m_query now.
* gimple-range-path.cc (path_range_query::path_range_query):
Adjust for oracle reference pointer.
(path_range_query::compute_ranges): Likewise.
(jt_fur_source::jt_fur_source): Adjust for no m_oracle member.
(jt_fur_source::register_relation): Do not check for NULL
pointer.
(jt_fur_source::query_relation): Likewise.
* gimple-range.cc (gimple_ranger::gimple_ranger): Adjust for
reference pointer.
* value-query.cc (default_relation_oracle): New.
(range_query::create_relation_oracle): Relocate from header.
Ensure not being added to global query.
(range_query::destroy_relation_oracle): Relocate from header.
(range_query::range_query): Initailize to default oracle.
(ange_query::~range_query): Call destroy_relation_oracle.
* value-query.h (class range_query): Adjust prototypes.
(range_query::create_relation_oracle): Move to source file.
(range_query::destroy_relation_oracle): Move to source file.
* value-relation.cc (relation_oracle::validate_relation): Delete.
(relation_oracle::register_stmt): Rename to register_relation.
(relation_oracle::register_edge): Likewise.
* value-relation.h (register_stmt): Rename to register_relation and
provide default function in base class.
(register_edge): Likewise.
(relation_oracle::validate_relation): Delete.
(relation_oracle::query_relation): Provide default in base class.
(relation_oracle::dump): Likewise.
(relation_oracle::equiv_set): Likewise.
(default_relation_oracle): New extenal reference.
(partial_equiv_set, add_partial_equiv): Move to protected.
Diffstat (limited to 'gcc/gimple-range-path.cc')
-rw-r--r-- | gcc/gimple-range-path.cc | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/gcc/gimple-range-path.cc b/gcc/gimple-range-path.cc index ef3db10..cf7e040 100644 --- a/gcc/gimple-range-path.cc +++ b/gcc/gimple-range-path.cc @@ -44,7 +44,7 @@ path_range_query::path_range_query (gimple_ranger &ranger, m_ranger (ranger), m_resolve (resolve) { - m_oracle = new path_oracle (m_ranger.oracle ()); + m_oracle = new path_oracle (&(m_ranger.oracle ())); reset_path (path, dependencies); } @@ -54,7 +54,7 @@ path_range_query::path_range_query (gimple_ranger &ranger, bool resolve) m_ranger (ranger), m_resolve (resolve) { - m_oracle = new path_oracle (m_ranger.oracle ()); + m_oracle = new path_oracle (&(m_ranger.oracle ())); } path_range_query::~path_range_query () @@ -563,7 +563,7 @@ path_range_query::compute_ranges (const bitmap_head *dependencies) if (m_resolve) { path_oracle *p = get_path_oracle (); - p->reset_path (m_ranger.oracle ()); + p->reset_path (&(m_ranger.oracle ())); } if (DEBUG_SOLVER) @@ -629,11 +629,6 @@ jt_fur_source::jt_fur_source (gimple *s, gcc_checking_assert (!path.is_empty ()); m_entry = path[path.length () - 1]; - - if (dom_info_available_p (CDI_DOMINATORS)) - m_oracle = query->oracle (); - else - m_oracle = NULL; } // Ignore statement and register relation on entry to path. @@ -641,8 +636,7 @@ jt_fur_source::jt_fur_source (gimple *s, void jt_fur_source::register_relation (gimple *, relation_kind k, tree op1, tree op2) { - if (m_oracle) - m_oracle->register_relation (m_entry, k, op1, op2); + m_query->oracle ().register_relation (m_entry, k, op1, op2); } // Ignore edge and register relation on entry to path. @@ -650,20 +644,16 @@ jt_fur_source::register_relation (gimple *, relation_kind k, tree op1, tree op2) void jt_fur_source::register_relation (edge, relation_kind k, tree op1, tree op2) { - if (m_oracle) - m_oracle->register_relation (m_entry, k, op1, op2); + m_query->oracle ().register_relation (m_entry, k, op1, op2); } relation_kind jt_fur_source::query_relation (tree op1, tree op2) { - if (!m_oracle) - return VREL_VARYING; - if (TREE_CODE (op1) != SSA_NAME || TREE_CODE (op2) != SSA_NAME) return VREL_VARYING; - return m_oracle->query_relation (m_entry, op1, op2); + return m_query->oracle().query_relation (m_entry, op1, op2); } // Return the range of STMT at the end of the path being analyzed. |