* config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
authorzippel <zippel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Jun 2007 18:43:50 +0000 (18:43 +0000)
committerzippel <zippel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Jun 2007 18:43:50 +0000 (18:43 +0000)
FP_REGNO_P): Use IN_RANGE.
(REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
(REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
(DATA_REG_P): Use DATA_REGNO_P.
(FP_REG_P): Use FP_REGNO_P.
(ADDRESS_REG_P): Use ADDRESS_REGNO_P.
* config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.

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

gcc/ChangeLog
gcc/config/m68k/m68k.c
gcc/config/m68k/m68k.h

index 616b311..e57e057 100644 (file)
@@ -1,3 +1,15 @@
+2007-06-25  Roman Zippel <zippel@linux-m68k.org>
+
+       * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
+       FP_REGNO_P): Use IN_RANGE.
+       (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
+       (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
+       (DATA_REG_P): Use DATA_REGNO_P.
+       (FP_REG_P): Use FP_REGNO_P.
+       (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
+       * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
+       REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
+
 2007-06-24  Jan Hubicka  <jh@suse.cz>
 
        PR middle-end/30563
index 039649c..ec65a88 100644 (file)
@@ -1609,7 +1609,7 @@ m68k_legitimate_base_reg_p (rtx x, bool strict_p)
   return (REG_P (x)
          && (strict_p
              ? REGNO_OK_FOR_BASE_P (REGNO (x))
-             : !DATA_REGNO_P (REGNO (x)) && !FP_REGNO_P (REGNO (x))));
+             : REGNO_OK_FOR_BASE_NONSTRICT_P (REGNO (x))));
 }
 
 /* Return true if X is a legitimate index register.  STRICT_P says
@@ -1624,7 +1624,7 @@ m68k_legitimate_index_reg_p (rtx x, bool strict_p)
   return (REG_P (x)
          && (strict_p
              ? REGNO_OK_FOR_INDEX_P (REGNO (x))
-             : !FP_REGNO_P (REGNO (x))));
+             : REGNO_OK_FOR_INDEX_NONSTRICT_P (REGNO (x))));
 }
 
 /* Return true if X is a legitimate index expression for a (d8,An,Xn) or
index e84994b..3ff2484 100644 (file)
@@ -662,16 +662,16 @@ __transfer_from_trampoline ()                                     \
 /* Macros to check register numbers against specific register classes.  */
 
 /* True for data registers, D0 through D7.  */
-#define DATA_REGNO_P(REGNO) ((unsigned int) (REGNO) < 8)
+#define DATA_REGNO_P(REGNO)    IN_RANGE (REGNO, 0, 7)
 
 /* True for address registers, A0 through A7.  */
-#define ADDRESS_REGNO_P(REGNO) (((unsigned int) (REGNO) - 8) < 8)
+#define ADDRESS_REGNO_P(REGNO) IN_RANGE (REGNO, 8, 15)
 
 /* True for integer registers, D0 through D7 and A0 through A7.  */
-#define INT_REGNO_P(REGNO) ((unsigned int) (REGNO) < 16)
+#define INT_REGNO_P(REGNO)     IN_RANGE (REGNO, 0, 15)
 
 /* True for floating point registers, FP0 through FP7.  */
-#define FP_REGNO_P(REGNO) (((unsigned int) (REGNO) - 16) < 8)
+#define FP_REGNO_P(REGNO)      IN_RANGE (REGNO, 16, 23)
 
 #define REGNO_OK_FOR_INDEX_P(REGNO)                    \
   (INT_REGNO_P (REGNO)                                 \
@@ -681,13 +681,15 @@ __transfer_from_trampoline ()                                     \
   (ADDRESS_REGNO_P (REGNO)                             \
    || ADDRESS_REGNO_P (reg_renumber[REGNO]))
 
-#define REGNO_OK_FOR_DATA_P(REGNO)                     \
-  (DATA_REGNO_P (REGNO)                                        \
-   || DATA_REGNO_P (reg_renumber[REGNO]))
+#define REGNO_OK_FOR_INDEX_NONSTRICT_P(REGNO)          \
+  (INT_REGNO_P (REGNO)                                 \
+   || REGNO == ARG_POINTER_REGNUM                      \
+   || REGNO >= FIRST_PSEUDO_REGISTER)
 
-#define REGNO_OK_FOR_FP_P(REGNO)                       \
-  (FP_REGNO_P (REGNO)                                  \
-   || FP_REGNO_P (reg_renumber[REGNO]))
+#define REGNO_OK_FOR_BASE_NONSTRICT_P(REGNO)           \
+  (ADDRESS_REGNO_P (REGNO)                             \
+   || REGNO == ARG_POINTER_REGNUM                      \
+   || REGNO >= FIRST_PSEUDO_REGISTER)
 
 /* Now macros that check whether X is a register and also,
    strictly, whether it is in a specified class.
@@ -697,13 +699,13 @@ __transfer_from_trampoline ()                                     \
    define_optimization.  */
 
 /* 1 if X is a data register.  */
-#define DATA_REG_P(X) (REG_P (X) && REGNO_OK_FOR_DATA_P (REGNO (X)))
+#define DATA_REG_P(X)  (REG_P (X) && DATA_REGNO_P (REGNO (X)))
 
 /* 1 if X is an fp register.  */
-#define FP_REG_P(X) (REG_P (X) && REGNO_OK_FOR_FP_P (REGNO (X)))
+#define FP_REG_P(X)    (REG_P (X) && FP_REGNO_P (REGNO (X)))
 
 /* 1 if X is an address register  */
-#define ADDRESS_REG_P(X) (REG_P (X) && REGNO_OK_FOR_BASE_P (REGNO (X)))
+#define ADDRESS_REG_P(X) (REG_P (X) && ADDRESS_REGNO_P (REGNO (X)))
 \f
 /* True if SYMBOL + OFFSET constants must refer to something within
    SYMBOL's section.  */