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];
...

Reply via email to