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);