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.
This commit is contained in:
Richard Biener
2024-09-24 11:47:26 +02:00
committed by Richard Biener
parent 5b652b0132
commit caf3fe7880

View File

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