On Thu, Apr 25, 2019 at 04:58:57PM +0200, Richard Biener wrote:
> 2019-04-25 Richard Biener <[email protected]>
>
> PR middle-end/89765
> * gimplify.c (gimplify_expr): Avoid turning a lvalue
> VIEW_CONVERT_EXPR into one operating on an rvalue.
Successfully bootstrapped/regtested on {powerpc64{,le},x86_64,i686}-linux.
> --- gcc/gimplify.c (revision 270574)
> +++ gcc/gimplify.c (working copy)
> @@ -12397,7 +12397,8 @@ gimplify_expr (tree *expr_p, gimple_seq
> break;
>
> case VIEW_CONVERT_EXPR:
> - if (is_gimple_reg_type (TREE_TYPE (*expr_p))
> + if ((fallback & fb_rvalue)
> + && is_gimple_reg_type (TREE_TYPE (*expr_p))
> && is_gimple_reg_type (TREE_TYPE (TREE_OPERAND (*expr_p, 0))))
> {
> ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
Jakub