aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-cache.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2022-10-07 12:55:32 -0400
committerAndrew MacLeod <amacleod@redhat.com>2022-10-13 11:28:47 -0400
commitaa05838b0536422256e0c477c57f1ea1d2915e92 (patch)
tree01f8fed672546f602e1e5db683ef1d1e00b7febe /gcc/gimple-range-cache.cc
parentb5563410ea613ff2b2d7c6fa1847cfcb1ff91efb (diff)
downloadgcc-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.cc10
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.