https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65818
vries at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |vries at gcc dot gnu.org --- Comment #4 from vries at gcc dot gnu.org --- Created attachment 35383 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35383&action=edit Tentative patch This patch seems to fix the error: ... diff --git a/gcc/gimplify.c b/gcc/gimplify.c index c68bd47..5f1dd1a 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -9352,7 +9352,9 @@ gimplify_va_arg_internal (tree valist, tree type, location_t loc, else gimplify_expr (&valist, pre_p, post_p, is_gimple_min_lval, fb_lvalue); - return targetm.gimplify_va_arg_expr (valist, type, pre_p, post_p); + tree expr = targetm.gimplify_va_arg_expr (valist, type, pre_p, post_p); + gimplify_expr (&expr, pre_p, post_p, is_gimple_val, fb_rvalue); + return expr; } /* Gimplify __builtin_va_arg, aka VA_ARG_EXPR, which is not really a ... Before gimplify_expr: ... (gdb) call debug_generic_expr (expr) *(double *) (ap = ap + 4294967288 & 4294967288B) ... And after gimplify_expr: ... (gdb) call debug_generic_expr (expr) D.3458 (gdb) call debug_gimple_seq (*pre_p) ap.13 = ap; D.3456 = ap.13 + 4294967288; ap.14 = D.3456 & 4294967288B; ap = ap.14; ap.13 = ap; D.3458 = MEM[(double *)ap.13]; ...