aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2004-02-12 18:25:09 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2004-02-12 13:25:09 -0500
commita5e9c8103348cb036a6f29773fd9e08ec925ffcb (patch)
tree7b4a430fb294344fe468f64ca7e6d902b0ac2a90 /gcc/expr.c
parent2e9a1f6b05e79f1b7de15d5ae64f3222d989e7e5 (diff)
downloadgcc-a5e9c8103348cb036a6f29773fd9e08ec925ffcb.zip
gcc-a5e9c8103348cb036a6f29773fd9e08ec925ffcb.tar.gz
gcc-a5e9c8103348cb036a6f29773fd9e08ec925ffcb.tar.bz2
emit-rtl.c (set_mem_attributes_minus_bitpos): Don't kill previous MEM_VOLATILE in REF.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Don't kill previous MEM_VOLATILE in REF. * function.c (fixup_var_refs): Save volatile_ok and set to 1. * expr.c (emit_block_move_via_movstr): Save and restore volatile_ok. From-SVN: r77718
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 7d6dd16..a6d222e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1417,6 +1417,7 @@ static bool
emit_block_move_via_movstr (rtx x, rtx y, rtx size, unsigned int align)
{
rtx opalign = GEN_INT (align / BITS_PER_UNIT);
+ int save_volatile_ok = volatile_ok;
enum machine_mode mode;
/* Since this is a move insn, we don't care about volatility. */
@@ -1466,7 +1467,7 @@ emit_block_move_via_movstr (rtx x, rtx y, rtx size, unsigned int align)
if (pat)
{
emit_insn (pat);
- volatile_ok = 0;
+ volatile_ok = save_volatile_ok;
return true;
}
else
@@ -1474,7 +1475,7 @@ emit_block_move_via_movstr (rtx x, rtx y, rtx size, unsigned int align)
}
}
- volatile_ok = 0;
+ volatile_ok = save_volatile_ok;
return false;
}