https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119493

--- Comment #15 from Martin Jambor <jamborm at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #12)
> For musttail, perhaps SRA could avoid changing the path from musttail call
> return to the return stmt.
> I've tried
> --- gcc/tree-sra.cc.jj        2025-01-02 11:23:27.527363147 +0100
> +++ gcc/tree-sra.cc   2025-03-31 09:28:36.535135797 +0200
> @@ -1668,9 +1668,11 @@ scan_function (void)
>             t = gimple_call_lhs (stmt);
>             if (t && !disqualify_if_bad_bb_terminating_stmt (stmt, t, NULL))
>               {
> +               if (gimple_call_must_tail_p (as_a <gcall *> (stmt)))
> +                 disqualify_base_of_expr (t, "result of musttail call.");
>                 /* If the STMT is a call to DEFERRED_INIT, avoid setting
>                    cannot_scalarize_away_bitmap.  */
> -               if (gimple_call_internal_p (stmt, IFN_DEFERRED_INIT))
> +               else if (gimple_call_internal_p (stmt, IFN_DEFERRED_INIT))
>                   ret |= !!build_access_from_expr_1 (t, stmt, true);
>                 else
>                   ret |= build_access_from_expr (t, stmt, true);

No objections from me, the above looks reasonable.

Reply via email to