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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> The problem is here:
>       /* Also strip a TARGET_EXPR that would force an extra copy.  */
>       if (TREE_CODE (*arg_p) == TARGET_EXPR)
>       {
>         tree init = TARGET_EXPR_INITIAL (*arg_p);
>         if (init
>             && !VOID_TYPE_P (TREE_TYPE (init)))
>           *arg_p = init;
>       }
> 
> --- CUT ---
> We don't do what gimplify_target_expr does:
>       /* Add a clobber for the temporary going out of scope, like
>        gimplify_bind_expr.  */

But that temp is not created until much later in internal_get_tmp_var.

Someone who understands the gimplifier better can/should be able to handle this
easily.

Reply via email to