]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.md (movdf_hardfloat32): Handle PRE_INC and PRE_DEC the same as offsettable...
authorDavid Edelsohn <edelsohn@gnu.org>
Fri, 2 Jul 1999 00:36:48 +0000 (18:36 -0600)
committerJeff Law <law@gcc.gnu.org>
Fri, 2 Jul 1999 00:36:48 +0000 (18:36 -0600)
`
        * rs6000.md (movdf_hardfloat32): Handle PRE_INC and PRE_DEC the
        same as offsettable in cases 1 and 2.

From-SVN: r27913

gcc/config/rs6000/rs6000.md

index c2749f8222faf8ce56eef56a353a066b2e22600a..10f2c0847911a18ebb269e541c608d6cd8720e4c 100644 (file)
     case 1:
       if (offsettable_memref_p (operands[1])
          || (GET_CODE (operands[1]) == MEM
-             && GET_CODE (XEXP (operands[1], 0)) == LO_SUM))
+             && (GET_CODE (XEXP (operands[1], 0)) == LO_SUM
+                 || GET_CODE (XEXP (operands[1], 0)) == PRE_INC
+                 || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)))
        {
          /* If the low-address word is used in the address, we must load
             it last.  Otherwise, load it first.  Note that we cannot have
        {
          rtx addreg;
 
-         if (GET_CODE (XEXP (operands[1], 0)) == PRE_INC
-             || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)
-           abort ();
-
          addreg = find_addr_reg (XEXP (operands[1], 0));
          if (refers_to_regno_p (REGNO (operands[0]),
                                 REGNO (operands[0]) + 1,
     case 2:
       if (offsettable_memref_p (operands[0])
          || (GET_CODE (operands[0]) == MEM
-             && GET_CODE (XEXP (operands[0], 0)) == LO_SUM))
+             && (GET_CODE (XEXP (operands[0], 0)) == LO_SUM
+                 || GET_CODE (XEXP (operands[0], 0)) == PRE_INC
+                 || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)))
        return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\";
       else
        {
          rtx addreg;
 
-         if (GET_CODE (XEXP (operands[0], 0)) == PRE_INC
-             || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)
-           abort ();
-
          addreg = find_addr_reg (XEXP (operands[0], 0));
          output_asm_insn (\"{stx|stwx} %1,%0\", operands);
          output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg);