(adddi3, subdi3): Need scratch reg whenever operand 0 in mem and operands 1 not '0'.
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 9 Apr 1995 13:22:42 +0000 (09:22 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 9 Apr 1995 13:22:42 +0000 (09:22 -0400)
(adddi3, subdi3): Need scratch reg whenever operand 0 in mem and operands 1
not '0'.
(subdi3): Don't treat two non-equal MEMs as non-aliasing.

From-SVN: r9342

gcc/config/i386/i386.md

index 0f26b1c..e815346 100644 (file)
   [(set (match_operand:DI 0 "general_operand" "=&r,ro,o,&r,ro,o,&r,o,o,o")
        (plus:DI (match_operand:DI 1 "general_operand" "%0,0,0,o,riF,o,or,riF,riF,o")
                 (match_operand:DI 2 "general_operand" "o,riF,o,0,0,0,oriF,riF,o,o")))
-   (clobber (match_scratch:SI 3 "=X,X,&r,X,X,&r,X,X,&r,&r"))]
+   (clobber (match_scratch:SI 3 "=X,X,&r,X,&r,&r,X,&r,&r,&r"))]
   ""
   "*
 {
   [(set (match_operand:DI 0 "general_operand" "=&r,ro,&r,o,o")
        (minus:DI (match_operand:DI 1 "general_operand" "0,0,roiF,riF,o")
                  (match_operand:DI 2 "general_operand" "o,riF,roiF,riF,o")))
-   (clobber (match_scratch:SI 3 "=X,X,X,X,&r"))]
+   (clobber (match_scratch:SI 3 "=X,X,X,&r,&r"))]
   ""
   "*
 {
       xops[2] = high[1];
       xops[3] = low[1];
 
-      if (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
+      if (GET_CODE (operands[0]) != MEM)
        {
          output_asm_insn (AS2 (mov%L1,%3,%1), xops);
          output_asm_insn (AS2 (mov%L0,%2,%0), xops);