diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2022-10-07 12:55:32 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2022-10-13 11:28:47 -0400 |
commit | aa05838b0536422256e0c477c57f1ea1d2915e92 (patch) | |
tree | 01f8fed672546f602e1e5db683ef1d1e00b7febe /gcc/gimple-range-cache.cc | |
parent | b5563410ea613ff2b2d7c6fa1847cfcb1ff91efb (diff) | |
download | gcc-aa05838b0536422256e0c477c57f1ea1d2915e92.zip gcc-aa05838b0536422256e0c477c57f1ea1d2915e92.tar.gz gcc-aa05838b0536422256e0c477c57f1ea1d2915e92.tar.bz2 |
Add equivalence iterator to relation oracle.
Instead of looping over an exposed equivalence bitmap, provide iterators
to loop over equivalences, partial equivalences, or both.
* gimple-range-cache.cc (ranger_cache::fill_block_cache): Use
iterator.
* value-relation.cc
(equiv_relation_iterator::equiv_relation_iterator): New.
(equiv_relation_iterator::next): New.
(equiv_relation_iterator::get_name): New.
* value-relation.h (class relation_oracle): Privatize some methods.
(class equiv_relation_iterator): New.
(FOR_EACH_EQUIVALENCE): New.
(FOR_EACH_PARTIAL_EQUIV): New.
(FOR_EACH_PARTIAL_AND_FULL_EQUIV): New.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r-- | gcc/gimple-range-cache.cc | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 4782d47..8c80ba6 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -1220,15 +1220,9 @@ ranger_cache::fill_block_cache (tree name, basic_block bb, basic_block def_bb) // See if any equivalences can refine it. if (m_oracle) { - unsigned i; - bitmap_iterator bi; - // Query equivalences in read-only mode. - const_bitmap equiv = m_oracle->equiv_set (name, bb); - EXECUTE_IF_SET_IN_BITMAP (equiv, 0, i, bi) + tree equiv_name; + FOR_EACH_EQUIVALENCE (m_oracle, bb, name, equiv_name) { - if (i == SSA_NAME_VERSION (name)) - continue; - tree equiv_name = ssa_name (i); basic_block equiv_bb = gimple_bb (SSA_NAME_DEF_STMT (equiv_name)); // Check if the equiv has any ranges calculated. |