diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-23 17:45:46 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-06-23 17:45:46 -0400 |
commit | d8e5c94615a8aea0214f1905b6b234691628a768 (patch) | |
tree | 5e61e5dd6971c02f49ec68f136bb8e5df82cbf94 | |
parent | 014aa47e1e4d76db5f974efe51068d61ec5d176d (diff) | |
download | gcc-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.c | 6 |
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. */ |