aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2004-12-14 22:35:48 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2004-12-14 22:35:48 +0000
commit6af713e46c072179890ac797ed7fa80801460165 (patch)
tree3931bccc755e947f5a01f68eac4ca129d8135689 /gcc
parentcf77e601e577e8e082487c08f72e0f4e4925f6af (diff)
downloadgcc-6af713e46c072179890ac797ed7fa80801460165.zip
gcc-6af713e46c072179890ac797ed7fa80801460165.tar.gz
gcc-6af713e46c072179890ac797ed7fa80801460165.tar.bz2
pa.h (REGNO_OK_FOR_INDEX_P, [...]): Check register number and that reg_renumber is nonzero before using it.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/pa.h25
2 files changed, 22 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index edb43c6..93bb229 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index e5c30b2..0ed4714 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -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.