aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-10-09 15:19:52 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-10-09 15:19:52 -0400
commit37568125833520ba34d3723db4c888013ae0d725 (patch)
tree4e48e6342588f7fe66765565f7f9aff01345ef93
parent90764a87b6122ef5c8ac3bae438990ed1944bbc3 (diff)
downloadgcc-37568125833520ba34d3723db4c888013ae0d725.zip
gcc-37568125833520ba34d3723db4c888013ae0d725.tar.gz
gcc-37568125833520ba34d3723db4c888013ae0d725.tar.bz2
(expand_expr, case ABS_EXPR): Don't copy twice into volatile MEM.
From-SVN: r5698
-rw-r--r--gcc/expr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index f31e048d..91b2d6e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -5001,6 +5001,7 @@ expand_expr (exp, target, tmode, modifier)
target = original_target;
temp = gen_label_rtx ();
if (target == 0 || ! safe_from_p (target, TREE_OPERAND (exp, 0))
+ || (GET_CODE (target) == MEM && MEM_VOLATILE_P (target))
|| (GET_CODE (target) == REG
&& REGNO (target) < FIRST_PSEUDO_REGISTER))
target = gen_reg_rtx (mode);