diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2024-05-17 14:27:12 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2024-05-23 16:50:00 -0400 |
commit | ac0bc89aea79b940a17697fb4a758254631c2400 (patch) | |
tree | 78c3c09fad8c61f7372c87ea5f5938a1c5314f20 /gcc/gimple-range-fold.h | |
parent | 44db939611a1cd3fdca93ae88d664f9886d549d5 (diff) | |
download | gcc-ac0bc89aea79b940a17697fb4a758254631c2400.zip gcc-ac0bc89aea79b940a17697fb4a758254631c2400.tar.gz gcc-ac0bc89aea79b940a17697fb4a758254631c2400.tar.bz2 |
Make GORI a range_query component.
This patch moves the GORI component into the range_query object, and
makes it generally available. This makes it much easier to share
between ranger and the passes.
* gimple-range-cache.cc (ranger_cache::ranger_cache): Create
GORi via the range_query instead of a local member.
(ranger_cache::dump_bb): Use gori via from the range_query parent.
(ranger_cache::get_global_range): Likewise.
(ranger_cache::set_global_range): Likewise.
(ranger_cache::edge_range): Likewise.
(anger_cache::block_range): Likewise.
(ranger_cache::fill_block_cache): Likewise.
(ranger_cache::range_from_dom): Likewise.
(ranger_cache::register_inferred_value): Likewise.
* gimple-range-cache.h (ranger_cache::m_gori): Delete.
* gimple-range-fold.cc (fur_source::fur_source): Set m_depend_p.
(fur_depend::fur_depend): Remove gori parameter.
* gimple-range-fold.h (fur_source::gori): Adjust.
(fur_source::m_gori): Delete.
(fur_source::m_depend): New.
(fur_depend::fur_depend): Adjust prototype.
* gimple-range-path.cc (path_range_query::path_range_query): Share
ranger oracles.
(path_range_query::range_defined_in_block): Use oracle directly.
(path_range_query::compute_ranges_in_block): Use new gori() method.
(path_range_query::adjust_for_non_null_uses): Use oracle directly.
(path_range_query::compute_exit_dependencies): Likewise.
(jt_fur_source::jt_fur_source): No gori in the parameters.
(path_range_query::range_of_stmt): Likewise.
(path_range_query::compute_outgoing_relations): Likewise.
* gimple-range.cc (gimple_ranger::fold_range_internal): Likewise.
(gimple_ranger::range_of_stmt): Access gori via gori () method.
(assume_query::range_of_expr): Create a gori object.
(assume_query::~assume_query): Destroy a gori object.
(assume_query::calculate_op): Remove old gori() accessor.
* gimple-range.h (gimple_ranger::gori): Delete.
(assume_query::~assume_query): New.
(assume_query::m_gori): Delete.
* tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges): use
gori () method.
* tree-ssa-threadedge.cc (compute_exit_dependencies): Likewise.
* value-query.cc (default_gori): New.
(range_query::create_gori): New.
(range_query::destroy_gori): New.
(range_query::share_oracles): Set m_gori.
(range_query::range_query): Set m_gori to default.
(range_query::~range_query): call destroy gori.
* value-query.h (range_query): Adjust prototypes
(range_query::m_gori): New.
Diffstat (limited to 'gcc/gimple-range-fold.h')
-rw-r--r-- | gcc/gimple-range-fold.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/gimple-range-fold.h b/gcc/gimple-range-fold.h index d974b01..9ae6cf5 100644 --- a/gcc/gimple-range-fold.h +++ b/gcc/gimple-range-fold.h @@ -106,7 +106,8 @@ class fur_source public: fur_source (range_query *q = NULL); inline range_query *query () { return m_query; } - inline class gori_compute *gori () { return m_gori; }; + inline class gimple_outgoing_range *gori () + { return m_depend_p ? &(m_query->gori ()) : NULL; } virtual bool get_operand (vrange &r, tree expr); virtual bool get_phi_operand (vrange &r, tree expr, edge e); virtual relation_kind query_relation (tree op1, tree op2); @@ -117,7 +118,7 @@ public: void register_outgoing_edges (gcond *, irange &lhs_range, edge e0, edge e1); protected: range_query *m_query; - gori_compute *m_gori; + bool m_depend_p; }; // fur_stmt is the specification for drawing an operand from range_query Q @@ -140,7 +141,7 @@ private: class fur_depend : public fur_stmt { public: - fur_depend (gimple *s, gori_compute *gori, range_query *q = NULL); + fur_depend (gimple *s, range_query *q = NULL); virtual void register_relation (gimple *stmt, relation_kind k, tree op1, tree op2) override; virtual void register_relation (edge e, relation_kind k, tree op1, |