pa.h (REGNO_OK_FOR_INDEX_P, [...]): Check register number and that reg_renumber is...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Tue, 14 Dec 2004 22:35:48 +0000 (22:35 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Tue, 14 Dec 2004 22:35:48 +0000 (22:35 +0000)
* pa.h (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_FP_P):
Check register number and that reg_renumber is nonzero before using it.

From-SVN: r92164

gcc/ChangeLog
gcc/config/pa/pa.h

index edb43c6fc74a120a5b601db91eee62599fabd02b..93bb229bfc553d29db09201ed256741fe1ec50fd 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * pa.h (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_FP_P):
+       Check register number and that reg_renumber is nonzero before using it.
+
 2004-12-14  Steve Ellcey  <sje@cup.hp.com>
 
        * doc/invoke.texi (IA-64 options): Add existing options that
index e5c30b2c1477096184a8ebc3486c8260b4567b40..0ed47149f4414e4a12b369e72107be3fcb892473 100644 (file)
@@ -1172,18 +1172,27 @@ extern int may_call_alloca;
 
 /* Macros to check register numbers against specific register classes.  */
 
-/* These assume that REGNO is a hard or pseudo reg number.
-   They give nonzero only if REGNO is a hard reg of the suitable class
+/* The following macros assume that X is a hard or pseudo reg number.
+   They give nonzero only if X is a hard reg of the suitable class
    or a pseudo reg currently allocated to a suitable hard reg.
    Since they use reg_renumber, they are safe only once reg_renumber
    has been allocated, which happens in local-alloc.c.  */
 
-#define REGNO_OK_FOR_INDEX_P(REGNO) \
-  ((REGNO) && ((REGNO) < 32 || (unsigned) reg_renumber[REGNO] < 32))
-#define REGNO_OK_FOR_BASE_P(REGNO)  \
-  ((REGNO) && ((REGNO) < 32 || (unsigned) reg_renumber[REGNO] < 32))
-#define REGNO_OK_FOR_FP_P(REGNO) \
-  (FP_REGNO_P (REGNO) || FP_REGNO_P (reg_renumber[REGNO]))
+#define REGNO_OK_FOR_INDEX_P(X) \
+  ((X) && ((X) < 32                                                    \
+   || (X >= FIRST_PSEUDO_REGISTER                                      \
+       && reg_renumber                                                 \
+       && (unsigned) reg_renumber[X] < 32)))
+#define REGNO_OK_FOR_BASE_P(X) \
+  ((X) && ((X) < 32                                                    \
+   || (X >= FIRST_PSEUDO_REGISTER                                      \
+       && reg_renumber                                                 \
+       && (unsigned) reg_renumber[X] < 32)))
+#define REGNO_OK_FOR_FP_P(X) \
+  (FP_REGNO_P (X)                                                      \
+   || (X >= FIRST_PSEUDO_REGISTER                                      \
+       && reg_renumber                                                 \
+       && FP_REGNO_P (reg_renumber[X])))
 
 /* Now macros that check whether X is a register and also,
    strictly, whether it is in a specified class.