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

--- Comment #8 from Sprite <spriteovo at gmail dot com> ---
(In reply to Richard Biener from comment #7)
> The clobber is built by gimplify_target_expr and TARGET_EXPR_SLOT is changed
> in place to the static variable.
> 
> Does the following fix the RISC-V issue?
> 
> diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc
> index ade6e335da7..aece89a3e9b 100644
> --- a/gcc/gimplify.cc
> +++ b/gcc/gimplify.cc
> @@ -7154,8 +7154,10 @@ gimplify_target_expr (tree *expr_p, gimple_seq
> *pre_p, gimple_seq *post_p)
>         gimplify_and_add (init, &init_pre_p);
>  
>        /* Add a clobber for the temporary going out of scope, like
> -        gimplify_bind_expr.  */
> +        gimplify_bind_expr.  But only if we did not promote the
> +        temporary to static storage.  */
>        if (gimplify_ctxp->in_cleanup_point_expr
> +         && !TREE_STATIC (temp)
>           && needs_to_live_in_memory (temp))
>         {
>           if (flag_stack_reuse == SR_ALL)

Yes, I have tested this patch on RISC-V platform, it fixes the issue. Thank
you!

Reply via email to