aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/pa/pa.h9
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df51bf6..b51cc41 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Tue Aug 3 14:14:52 1999 Jeffrey A Law (law@cygnus.com)
+
+ * pa.h (HARD_REGNO_NREGS): FP registers are always 4 bytes wide for
+ PA1.1 and above.
+ (CLASS_MAX_NREGS): Likewise.
+
Tue Aug 3 03:51:20 1999 Jeffrey A Law (law@cygnus.com)
* cse.c (cse_insn): Fix dumb thinko in last change.
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index fe51937..5bb196c 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -563,7 +563,8 @@ int lhs_lshift_cint_operand ();
The floating point registers are 64 bits wide. Snake fp regs are 32
bits wide */
#define HARD_REGNO_NREGS(REGNO, MODE) \
- (!TARGET_PA_11 && FP_REGNO_P (REGNO) ? 1 \
+ (FP_REGNO_P (REGNO) \
+ ? (!TARGET_PA_11 ? 1 : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
@@ -783,8 +784,10 @@ int zdepi_cint_p ();
/* Return the maximum number of consecutive registers
needed to represent mode MODE in a register of class CLASS. */
#define CLASS_MAX_NREGS(CLASS, MODE) \
- (!TARGET_PA_11 && ((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS) ? 1 : \
- ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
+ ((CLASS) == FP_REGS || (CLASS) == FPUPPER_REGS \
+ ? (!TARGET_PA_11 ? 1 : (GET_MODE_SIZE (MODE) + 4 - 1) / 4) \
+ : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
+
/* Stack layout; function entry, exit and calling. */