https://gcc.gnu.org/g:caf3fe7880e62692da45489dc5bcae069c1555c8

commit r15-3852-gcaf3fe7880e62692da45489dc5bcae069c1555c8
Author: Richard Biener <rguent...@suse.de>
Date:   Tue Sep 24 11:47:26 2024 +0200

    tree-optimization/114855 - slow VRP due to equiv oracle queries
    
    For the testcase in PR114855 VRP takes 320.41s (23%) (after mitigating
    backwards threader slowness).  This is mostly due to the bitmap check
    in equiv_oracle::find_equiv_dom.  The following turns this bitmap
    to tree view, trading the linear search for a O(log N) one which
    improves VRP time to 54.54s (5%).
    
            PR tree-optimization/114855
            * value-relation.cc (equiv_oracle::equiv_oracle): Switch
            m_equiv_set to tree view.

Diff:
---
 gcc/value-relation.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc
index 45722fcd13a6..d6ad2dd984f6 100644
--- a/gcc/value-relation.cc
+++ b/gcc/value-relation.cc
@@ -321,6 +321,7 @@ equiv_oracle::equiv_oracle ()
   m_equiv.create (0);
   m_equiv.safe_grow_cleared (last_basic_block_for_fn (cfun) + 1);
   m_equiv_set = BITMAP_ALLOC (&m_bitmaps);
+  bitmap_tree_view (m_equiv_set);
   obstack_init (&m_chain_obstack);
   m_self_equiv.create (0);
   m_self_equiv.safe_grow_cleared (num_ssa_names + 1);

Reply via email to