aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-06-23 17:45:46 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-06-23 17:45:46 -0400
commitd8e5c94615a8aea0214f1905b6b234691628a768 (patch)
tree5e61e5dd6971c02f49ec68f136bb8e5df82cbf94
parent014aa47e1e4d76db5f974efe51068d61ec5d176d (diff)
downloadgcc-d8e5c94615a8aea0214f1905b6b234691628a768.zip
gcc-d8e5c94615a8aea0214f1905b6b234691628a768.tar.gz
gcc-d8e5c94615a8aea0214f1905b6b234691628a768.tar.bz2
(output_move_double): If the dest is register pair and both regs are used in src address...
(output_move_double): If the dest is register pair and both regs are used in src address, use ADDR to compute src address, not ADDD, which throws away scaled index. From-SVN: r7540
-rw-r--r--gcc/config/ns32k/ns32k.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/config/ns32k/ns32k.c b/gcc/config/ns32k/ns32k.c
index 3c80751..89cfbc3 100644
--- a/gcc/config/ns32k/ns32k.c
+++ b/gcc/config/ns32k/ns32k.c
@@ -339,12 +339,12 @@ output_move_double (operands)
&& reg_mentioned_p (latehalf[0], XEXP (operands[1], 0)))
{
/* If both halves of dest are used in the src memory address,
- add the two regs and put them in the low reg (operands[0]).
+ load the destination address into the low reg (operands[0]).
Then it works to load latehalf first. */
rtx xops[2];
- xops[0] = latehalf[0];
+ xops[0] = XEXP (operands[1], 0);
xops[1] = operands[0];
- output_asm_insn ("addd %0,%1", xops);
+ output_asm_insn ("addr %a0,%1", xops);
operands[1] = gen_rtx (MEM, DImode, operands[0]);
latehalf[1] = adj_offsettable_operand (operands[1], 4);
/* The first half has the overlap, Do the late half first. */