On Sun, Oct 13, 2024 at 12:07 AM Andrew Pinski <quic_apin...@quicinc.com> wrote:
>
> This is a better patch to fix PR 117096 (phiopt vs clobbers).
> The only time we remove clobbers of local variables is during
> remove_unused_locals. Since DSE might remove all of the stores
> to a local variable, it makes sense to also try to remove unused local
> variables afterwards.
> This shows up more in C++ code with encapsulation.
>
> This was previously mentioned to be done:
> https://gcc.gnu.org/pipermail/gcc-patches/2021-April/567744.html
> In the end it was chosen "Or we might want to place explicit schedules of
> remove_unused_locals in the pass pipeline." (in stdargs,
> https://gcc.gnu.org/pipermail/gcc-patches/2021-April/568807.html) but that is 
> too
> late for early phiopt. This patch does the "maybe we should unconditionally 
> do so"
> option instead.
>
> Bootstrapped and tested on x86_64-linux-gnu.

We've been very "careful" with placing this TODO it seems.  Note that now
all DSE pass invocations are followed by DCE which knows how to "lazily"
remove _indirect_ CLOBBERs and it can elide loads.  So I think it makes
more sense to stick the TODO_remove_unused_locals on the DCE pass?
Maybe add a 2nd pass parameter indicating whether to remove unused
locals after it?

Richard.

> gcc/ChangeLog:
>
>         PR tree-optimization/117096
>         * tree-ssa-dse.cc (pass_data_dse): Add TODO_remove_unused_locals
>         to todo_flags_finish.
>
> Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
> ---
>  gcc/tree-ssa-dse.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/tree-ssa-dse.cc b/gcc/tree-ssa-dse.cc
> index 63bf4491cf6..42a133b8631 100644
> --- a/gcc/tree-ssa-dse.cc
> +++ b/gcc/tree-ssa-dse.cc
> @@ -1654,7 +1654,7 @@ const pass_data pass_data_dse =
>    0, /* properties_provided */
>    0, /* properties_destroyed */
>    0, /* todo_flags_start */
> -  0, /* todo_flags_finish */
> +  TODO_remove_unused_locals, /* todo_flags_finish */
>  };
>
>  class pass_dse : public gimple_opt_pass
> --
> 2.43.0
>

Reply via email to