aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-09-24 12:53:11 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2024-09-24 12:59:47 +0200
commit9a795b3a5b6a0d8b4b4f38a66ab9782aabead92e (patch)
tree8552e026515d5acda32e1cbea215528d5a8fac8b /gcc
parent34366176046351250e1beb578664d926fbdd50c9 (diff)
downloadgcc-9a795b3a5b6a0d8b4b4f38a66ab9782aabead92e.zip
gcc-9a795b3a5b6a0d8b4b4f38a66ab9782aabead92e.tar.gz
gcc-9a795b3a5b6a0d8b4b4f38a66ab9782aabead92e.tar.bz2
tree-optimization/114855 - more update_ssa speedup
The following tackles another source of slow bitmap operations, namely populating blocks_to_update. We already have that in tree view around PHI insertion but also the initial population is slow. There's unfortunately a conditional inbetween list view requirement and the bitmap API doesn't allow opportunistic switching but rejects tree -> tree or list -> list transitions. So the following patch wraps the early population in a tree view section with possibly one redundant tree -> list -> tree view transition. This cuts tree SSA incremental from 228.25s (21%) to 65.05s (7%). PR tree-optimization/114855 * tree-into-ssa.cc (update_ssa): Use tree view for the initial population of blocks_to_update.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-into-ssa.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-into-ssa.cc b/gcc/tree-into-ssa.cc
index 1cce9d6..fc61d47 100644
--- a/gcc/tree-into-ssa.cc
+++ b/gcc/tree-into-ssa.cc
@@ -3445,6 +3445,7 @@ update_ssa (unsigned update_flags)
blocks_with_phis_to_rewrite = BITMAP_ALLOC (NULL);
bitmap_tree_view (blocks_with_phis_to_rewrite);
blocks_to_update = BITMAP_ALLOC (NULL);
+ bitmap_tree_view (blocks_to_update);
insert_phi_p = (update_flags != TODO_update_ssa_no_phi);
@@ -3492,6 +3493,8 @@ update_ssa (unsigned update_flags)
placement heuristics. */
prepare_block_for_update (start_bb, insert_phi_p);
+ bitmap_list_view (blocks_to_update);
+
tree name;
if (flag_checking)
@@ -3517,6 +3520,8 @@ update_ssa (unsigned update_flags)
}
else
{
+ bitmap_list_view (blocks_to_update);
+
/* Otherwise, the entry block to the region is the nearest
common dominator for the blocks in BLOCKS. */
start_bb = nearest_common_dominator_for_set (CDI_DOMINATORS,