aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.def
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-04-27 14:27:40 +0200
committerRichard Biener <rguenther@suse.de>2021-04-27 15:17:34 +0200
commit8d4c374c4419a8751cfae18d6b58169c62dea49f (patch)
tree1d4664ee6bc6480da5d25f58cf23495c9be15b75 /gcc/passes.def
parentd8e1f1d24179690fd9c0f63c27b12e030010d9ea (diff)
downloadgcc-8d4c374c4419a8751cfae18d6b58169c62dea49f.zip
gcc-8d4c374c4419a8751cfae18d6b58169c62dea49f.tar.gz
gcc-8d4c374c4419a8751cfae18d6b58169c62dea49f.tar.bz2
tree-optimization/99912 - schedule another TODO_remove_unused_locals
This makes sure to remove unused locals and prune CLOBBERs after the first scalar cleanup phase after IPA optimizations. On the testcase in the PR this results in 8000 CLOBBERs removed which in turn unleashes more DSE which otherwise hits its walking limit of 256 too early on this testcase. 2021-04-27 Richard Biener <rguenther@suse.de> PR tree-optimization/99912 * passes.def: Add comment about new TODO_remove_unused_locals. * tree-stdarg.c (pass_data_stdarg): Run TODO_remove_unused_locals at start.
Diffstat (limited to 'gcc/passes.def')
-rw-r--r--gcc/passes.def3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/passes.def b/gcc/passes.def
index 61fe9fd..f7c4289 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -212,6 +212,9 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_vrp, true /* warn_array_bounds_p */);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_dce);
+ /* pass_stdarg is always run and at this point we execute
+ TODO_remove_unused_locals to prune CLOBBERs of dead
+ variables which are otherwise a churn on alias walkings. */
NEXT_PASS (pass_stdarg);
NEXT_PASS (pass_call_cdce);
NEXT_PASS (pass_cselim);