From: Richard Biener Date: Tue, 27 Apr 2021 12:27:40 +0000 (+0200) Subject: tree-optimization/99912 - schedule another TODO_remove_unused_locals X-Git-Tag: basepoints/gcc-13~8157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d4c374c4419a8751cfae18d6b58169c62dea49f;p=thirdparty%2Fgcc.git 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 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. --- diff --git a/gcc/passes.def b/gcc/passes.def index 61fe9fdc42c4..f7c42897f43a 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); diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index ef21c125651e..2f77a613df03 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -1114,7 +1114,7 @@ const pass_data pass_data_stdarg = ( PROP_cfg | PROP_ssa ), /* properties_required */ PROP_gimple_lva, /* properties_provided */ 0, /* properties_destroyed */ - 0, /* todo_flags_start */ + TODO_remove_unused_locals, /* todo_flags_start */ 0, /* todo_flags_finish */ };