This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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