This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR79908


> On Mar 14, 2017, at 3:57 AM, Richard Biener <richard.guenther@gmail.com> wrote:
> 
> On Tue, Mar 14, 2017 at 1:04 AM, Bill Schmidt
> <wschmidt@linux.vnet.ibm.com> wrote:
>> 
>> Index: gcc/tree-stdarg.c
>> ===================================================================
>> --- gcc/tree-stdarg.c   (revision 246109)
>> +++ gcc/tree-stdarg.c   (working copy)
>> @@ -1057,7 +1057,7 @@ expand_ifn_va_arg_1 (function *fun)
>>               types.  */
>>            gimplify_assign (lhs, expr, &pre);
>>          }
>> -       else
>> +       else if (is_gimple_addressable (expr))
>>          gimplify_expr (&expr, &pre, &post, is_gimple_lvalue, fb_lvalue);
> 
> This is wrong - we lose side-effects this way and the only reason we gimplify
> is to _not_ lose them.
> 
> Better is sth like
> 
> Index: gcc/tree-stdarg.c
> ===================================================================
> --- gcc/tree-stdarg.c   (revision 246082)
> +++ gcc/tree-stdarg.c   (working copy)
> @@ -1058,7 +1058,7 @@ expand_ifn_va_arg_1 (function *fun)
>            gimplify_assign (lhs, expr, &pre);
>          }
>        else
> -         gimplify_expr (&expr, &pre, &post, is_gimple_lvalue, fb_lvalue);
> +         gimplify_expr (&expr, &pre, &post, is_gimple_val, fb_either);
> 
>        input_location = saved_location;
>        pop_gimplify_context (NULL);

OK, thanks for the explanation.  Unfortunately this fails bootstrap with a failed 
assert a little later.  I'll dig further.

Bill


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]