On Thu, Apr 8, 2021 at 11:24 AM Martin Jambor <mjam...@suse.cz> wrote:
>
> Hi,
>
> When IPA-SRA removes an SSA_NAME from a LHS of a call statement
> because it is not necessary, it does not release it.  This patch fixes
> that.
>
> Bootstrapped and tested on x86_64, at some point I'll LTO-bootstrap it
> too.  I assume this is GCC 12 material, so OK once stage 1 opens?

Yes, and OK.

Richard.

> Thanks,
>
> Martin
>
>
> gcc/ChangeLog:
>
> 2021-04-08  Martin Jambor  <mjam...@suse.cz>
>
>         PR ipa/99951
>         * ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
>         If removing a call statement LHS SSA name, release it.
> ---
>  gcc/ipa-param-manipulation.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/gcc/ipa-param-manipulation.c b/gcc/ipa-param-manipulation.c
> index 132bb24f76a..1d1e64f546a 100644
> --- a/gcc/ipa-param-manipulation.c
> +++ b/gcc/ipa-param-manipulation.c
> @@ -856,6 +856,7 @@ ipa_param_adjustments::modify_call (gcall *stmt,
>
>    gcall *new_stmt = gimple_build_call_vec (callee_decl, vargs);
>
> +  tree ssa_to_remove = NULL;
>    if (tree lhs = gimple_call_lhs (stmt))
>      {
>        if (!m_skip_return)
> @@ -880,6 +881,7 @@ ipa_param_adjustments::modify_call (gcall *stmt,
>                 }
>               update_stmt (using_stmt);
>             }
> +         ssa_to_remove = lhs;
>         }
>      }
>
> @@ -898,6 +900,8 @@ ipa_param_adjustments::modify_call (gcall *stmt,
>        fprintf (dump_file, "\n");
>      }
>    gsi_replace (&gsi, new_stmt, true);
> +  if (ssa_to_remove)
> +    release_ssa_name (ssa_to_remove);
>    if (update_references)
>      do
>        {
> --
> 2.30.2
>

Reply via email to