diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2012-11-19 17:09:12 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2012-11-19 17:09:12 +0000 |
commit | bbe85d374d0c46520a3572c4c7270953457fa769 (patch) | |
tree | fbd066d14ca276279a108b8b55c6bf3857d03c54 | |
parent | 28dea86adf3bfe2b1c12e202ba479b0e3de8917c (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.c | 4 |
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); } |