aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-07-11 22:22:44 +0000
committerRichard Stallman <rms@gnu.org>1993-07-11 22:22:44 +0000
commitcb4107092f20307954da832ceec7842d0e77d3b3 (patch)
tree3a785e5e5633c5458c1ddf48685b5481f2359515
parent8e318904de7104de65f093a0abfdd23abc9224be (diff)
downloadgcc-cb4107092f20307954da832ceec7842d0e77d3b3.zip
gcc-cb4107092f20307954da832ceec7842d0e77d3b3.tar.gz
gcc-cb4107092f20307954da832ceec7842d0e77d3b3.tar.bz2
(output_move_double): Do the low reg first,
when only the high reg has an overlap. From-SVN: r4904
-rw-r--r--gcc/config/ns32k/ns32k.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/config/ns32k/ns32k.c b/gcc/config/ns32k/ns32k.c
index 6dd4a96..2235d44 100644
--- a/gcc/config/ns32k/ns32k.c
+++ b/gcc/config/ns32k/ns32k.c
@@ -345,10 +345,13 @@ output_move_double (operands)
operands[1] = gen_rtx (MEM, DImode, op0);
latehalf[1] = adj_offsettable_operand (operands[1], 4);
}
- /* Do the late half first. */
- output_asm_insn (singlemove_string (latehalf), latehalf);
- /* Then clobber. */
- return singlemove_string (operands);
+ if (reg_mentioned_p (op0, XEXP (op1, 0)))
+ {
+ /* The first half has the overlap, Do the late half first. */
+ output_asm_insn (singlemove_string (latehalf), latehalf);
+ /* Then clobber. */
+ return singlemove_string (operands);
+ }
}
/* Normal case. Do the two words, low-numbered first. */