]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(output_move_double): If the dest is register pair and both regs are used in src...
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 23 Jun 1994 21:45:46 +0000 (17:45 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 23 Jun 1994 21:45:46 +0000 (17:45 -0400)
(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

gcc/config/ns32k/ns32k.c

index 3c807514c5145cab52ae6611b4c5b61657611c69..89cfbc38fc5125fd802426147fd5030ae54f5aaf 100644 (file)
@@ -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.  */