aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2007-06-25 18:43:50 +0000
committerRoman Zippel <zippel@gcc.gnu.org>2007-06-25 18:43:50 +0000
commitbf32249ec2e8df94fa91c0c6d673ec44dec63da3 (patch)
treef532b1beb2543eae48436638100f0fabc01aba92
parent8de10a622a1311281ab59cee7d56ade678afbfb1 (diff)
downloadgcc-bf32249ec2e8df94fa91c0c6d673ec44dec63da3.zip
gcc-bf32249ec2e8df94fa91c0c6d673ec44dec63da3.tar.gz
gcc-bf32249ec2e8df94fa91c0c6d673ec44dec63da3.tar.bz2
m68k.h (DATA_REGNO_P, [...]): Use IN_RANGE.
* 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. From-SVN: r126001
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/m68k/m68k.c4
-rw-r--r--gcc/config/m68k/m68k.h28
3 files changed, 29 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 616b311..e57e057 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 039649c..ec65a88 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -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
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index e84994b..3ff2484 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -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)))
/* True if SYMBOL + OFFSET constants must refer to something within
SYMBOL's section. */