fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to identify potentially eliminable...
authorRoger Sayle <roger@eyesopen.com>
Sun, 23 Apr 2006 17:39:54 +0000 (17:39 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sun, 23 Apr 2006 17:39:54 +0000 (17:39 +0000)
* config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to
identify potentially eliminable registers to additionally catch
VIRTUAL_INCOMING_ARGS_REGNUM.
(addsi3): Update the conditions on when to use addsi_small_int.

From-SVN: r113197

gcc/ChangeLog
gcc/config/fr30/fr30.md

index f93061dd5866287274c07d669067e54f76767ac2..91293c1dfbbacd15e9325463ebee38e1becfbcaa 100644 (file)
@@ -1,3 +1,10 @@
+2006-04-23  Roger Sayle  <roger@eyesopen.com>
+
+       * config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to
+       identify potentially eliminable registers to additionally catch
+       VIRTUAL_INCOMING_ARGS_REGNUM.
+       (addsi3): Update the conditions on when to use addsi_small_int.
+
 2006-04-23  Roger Sayle  <roger@eyesopen.com>
 
        PR target/16641
index 734b3749ada86ede8c35b1eebf26dbdd03a30be1..0398eccc005a8d1687e3970d4bdd20f3f9bf70fd 100644 (file)
     emit_insn (gen_addsi_regs (operands[0], operands[1], operands[2]));
   else if (GET_CODE (operands[2]) != CONST_INT)
     emit_insn (gen_addsi_big_int (operands[0], operands[1], operands[2]));
-  else if (   (REGNO (operands[1]) != FRAME_POINTER_REGNUM)
-           && (REGNO (operands[1]) != ARG_POINTER_REGNUM)
-          && (INTVAL (operands[2]) >= -16)
-          && (INTVAL (operands[2]) <= 15))
+  else if (INTVAL (operands[2]) >= -16
+          && INTVAL (operands[2]) <= 15
+          && (!REGNO_PTR_FRAME_P (REGNO (operands[1]))
+              || REGNO (operands[1]) == STACK_POINTER_REGNUM))
     emit_insn (gen_addsi_small_int (operands[0], operands[1], operands[2]));
   else
     emit_insn (gen_addsi_big_int (operands[0], operands[1], operands[2]));
   [(set (match_operand:SI 0 "register_operand"              "=r,r")
        (plus:SI (match_operand:SI 1 "register_operand"      "0,0")
                 (match_operand:SI 2 "add_immediate_operand" "I,J")))]
-  "   (REGNO (operands[1]) != FRAME_POINTER_REGNUM)
-   && (REGNO (operands[1]) != ARG_POINTER_REGNUM)"
+  "! REGNO_PTR_FRAME_P (REGNO (operands[1]))
+   || REGNO (operands[1]) == STACK_POINTER_REGNUM"
   "@
    addn        %2, %0
    addn2       %2, %0"