summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2012-11-19 17:09:12 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2012-11-19 17:09:12 +0000
commitbbe85d374d0c46520a3572c4c7270953457fa769 (patch)
treefbd066d14ca276279a108b8b55c6bf3857d03c54
parent28dea86adf3bfe2b1c12e202ba479b0e3de8917c (diff)
Sprinkle TREE_SIDE_EFFECTS annotations around all the computations done in
va_arg(). __vfprintf() still unhappy in some edge cases I am investigating.
-rw-r--r--gnu/usr.bin/gcc/gcc/config/m88k/m88k.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/gcc/config/m88k/m88k.c b/gnu/usr.bin/gcc/gcc/config/m88k/m88k.c
index 1bbbd6e3501..2a4587e3747 100644
--- a/gnu/usr.bin/gcc/gcc/config/m88k/m88k.c
+++ b/gnu/usr.bin/gcc/gcc/config/m88k/m88k.c
@@ -2851,6 +2851,7 @@ m88k_va_arg (valist, type)
t = build (MULT_EXPR, TREE_TYPE (reg), arg_align,
build_int_2 (UNITS_PER_WORD, 0));
t = build (PLUS_EXPR, TREE_TYPE (reg), reg, t);
+ TREE_SIDE_EFFECTS (t) = 1;
r = expand_expr (t, addr_rtx, Pmode, EXPAND_NORMAL);
if (r != addr_rtx)
@@ -2859,6 +2860,7 @@ m88k_va_arg (valist, type)
/* Increment __va_arg. */
t = build (PLUS_EXPR, TREE_TYPE (arg), arg_align, build_int_2 (wsize, 0));
t = build (MODIFY_EXPR, TREE_TYPE (arg), arg, t);
+ TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
emit_jump_insn (gen_jump (lab_done));
@@ -2880,6 +2882,7 @@ m88k_va_arg (valist, type)
{
t = build (PLUS_EXPR, TREE_TYPE (stk), stk, build_int_2 (align - 1, 0));
t = build (BIT_AND_EXPR, TREE_TYPE (t), t, build_int_2 (-align, -1));
+ TREE_SIDE_EFFECTS (t) = 1;
}
else
t = stk;
@@ -2893,6 +2896,7 @@ m88k_va_arg (valist, type)
t = build (PLUS_EXPR, TREE_TYPE (t), t,
build_int_2 (wsize * UNITS_PER_WORD, 0));
t = build (MODIFY_EXPR, TREE_TYPE (stk), stk, t);
+ TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
}