aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa64-regs.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/pa/pa64-regs.h')
-rw-r--r--gcc/config/pa/pa64-regs.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/pa/pa64-regs.h b/gcc/config/pa/pa64-regs.h
index 9d53adc..a061d2f 100644
--- a/gcc/config/pa/pa64-regs.h
+++ b/gcc/config/pa/pa64-regs.h
@@ -229,9 +229,15 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FPUPPER_REGS, FP_REGS,
{0x00000000, 0x10000000}, /* SHIFT_REGS */ \
{0xfffffffe, 0x1fffffff}} /* ALL_REGS */
-/* This may not actually be necessary anymore. But until I can prove
+/* If defined, gives a class of registers that cannot be used as the
+ operand of a SUBREG that changes the mode of the object illegally. */
+/* ??? This may not actually be necessary anymore. But until I can prove
otherwise it will stay. */
-#define CLASS_CANNOT_CHANGE_SIZE (FP_REGS)
+#define CLASS_CANNOT_CHANGE_MODE (FP_REGS)
+
+/* Defines illegal mode changes for CLASS_CANNOT_CHANGE_MODE. */
+#define CLASS_CANNOT_CHANGE_MODE_P(FROM,TO) \
+ (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO))
/* The same information, inverted:
Return the class number of the smallest class containing