aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2022-06-28 12:07:14 +0200
committerRichard Biener <rguenther@suse.de>2022-06-28 13:13:34 +0200
commit8354d0abeb7646e109b2fb982afbc253644b0925 (patch)
treed7c2e6130e2d3182977ff613c6a22d8fd3c823c2
parent07f49e855b50d06181b08aa2498e631be27e8055 (diff)
downloadgcc-8354d0abeb7646e109b2fb982afbc253644b0925.zip
gcc-8354d0abeb7646e109b2fb982afbc253644b0925.tar.gz
gcc-8354d0abeb7646e109b2fb982afbc253644b0925.tar.bz2
Speedup loop splitting SSA update
Since we never process loops with inner loops that have been split we can delay SSA update until after the pass is done with the whole loop, avoiding the O(function-size) work associated with it. 2022-06-28 Richard Biener <rguenther@suse.de> * tree-ssa-loop-split.cc (fix_loop_bb_probability): Do not call update_ssa.
-rw-r--r--gcc/tree-ssa-loop-split.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/tree-ssa-loop-split.cc b/gcc/tree-ssa-loop-split.cc
index d61bad5..bccf621 100644
--- a/gcc/tree-ssa-loop-split.cc
+++ b/gcc/tree-ssa-loop-split.cc
@@ -491,8 +491,6 @@ static void
fix_loop_bb_probability (class loop *loop1, class loop *loop2, edge true_edge,
edge false_edge)
{
- update_ssa (TODO_update_ssa);
-
/* Proportion first loop's bb counts except those dominated by true
branch to avoid drop 1s down. */
basic_block *bbs1, *bbs2;
@@ -1668,7 +1666,8 @@ tree_ssa_split_loops (void)
if (loop->aux)
{
/* If any of our inner loops was split, don't split us,
- and mark our containing loop as having had splits as well. */
+ and mark our containing loop as having had splits as well.
+ This allows for delaying SSA update. */
loop_outer (loop)->aux = loop;
continue;
}