OSDN Git Service

* config/fr30/fr30.md (addsi_small_int): Use REGNO_PTR_FRAME_P to
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 23 Apr 2006 17:39:54 +0000 (17:39 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 23 Apr 2006 17:39:54 +0000 (17:39 +0000)
identify potentially eliminable registers to additionally catch
VIRTUAL_INCOMING_ARGS_REGNUM.
(addsi3): Update the conditions on when to use addsi_small_int.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113197 138bc75d-0d04-0410-961f-82ee72b054a4

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

index f93061d..91293c1 100644 (file)
@@ -1,5 +1,12 @@
 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
        * config/fr30/fr30.h (GO_IF_LEGITIMATE_ADDRESS): Check REGNO for
        STACK_POINTER_RTX and FRAME_POINTER_RTX instead of comparing the
index 734b374..0398ecc 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"