aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn Hassey <hassey@gnu.org>1993-06-08 13:22:04 +0000
committerJohn Hassey <hassey@gnu.org>1993-06-08 13:22:04 +0000
commitedebe1642eeea426955279e5cf6f8d539320786a (patch)
treee43200cf786d2ff275b42a8835e9fb6738c69a6c /gcc
parentd4b4cb5f4b08dae76ac508ed10f382a4e5880f68 (diff)
downloadgcc-edebe1642eeea426955279e5cf6f8d539320786a.zip
gcc-edebe1642eeea426955279e5cf6f8d539320786a.tar.gz
gcc-edebe1642eeea426955279e5cf6f8d539320786a.tar.bz2
Restrict use of 88110 extended registers to floating point.
From-SVN: r4648
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m88k/m88k.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/config/m88k/m88k.h b/gcc/config/m88k/m88k.h
index 2fbd069..c6cbe5e 100644
--- a/gcc/config/m88k/m88k.h
+++ b/gcc/config/m88k/m88k.h
@@ -666,7 +666,7 @@ extern char * reg_names[];
An XRF register can hold any mode, but two GRF registers are required
for larger modes. */
#define HARD_REGNO_NREGS(REGNO, MODE) \
- ((REGNO < FIRST_PSEUDO_REGISTER && REGNO >= FIRST_EXTENDED_REGISTER) \
+ (XRF_REGNO_P (REGNO) \
? 1 : ((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.
@@ -679,8 +679,8 @@ extern char * reg_names[];
registers. The compiler should be allowed to use these as a fast spill
area. */
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
- ((REGNO < FIRST_PSEUDO_REGISTER && REGNO >= FIRST_EXTENDED_REGISTER) \
- ? TARGET_88110 \
+ (XRF_REGNO_P(REGNO) \
+ ? (TARGET_88110 && GET_MODE_CLASS (MODE) == MODE_FLOAT) \
: (((MODE) != DImode && (MODE) != DFmode && (MODE) != DCmode) \
|| ((REGNO) & 1) == 0))
@@ -689,8 +689,10 @@ extern char * reg_names[];
If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2,
for any hard reg, then this must be 0 for correct output. */
#define MODES_TIEABLE_P(MODE1, MODE2) \
- (((MODE1) == DFmode || (MODE1) == DCmode || (MODE1) == DImode) \
- == ((MODE2) == DFmode || (MODE2) == DCmode || (MODE2) == DImode))
+ (((MODE1) == DFmode || (MODE1) == DCmode || (MODE1) == DImode \
+ || (TARGET_88110 && GET_MODE_CLASS (MODE1) == MODE_FLOAT)) \
+ == ((MODE2) == DFmode || (MODE2) == DCmode || (MODE2) == DImode \
+ || (TARGET_88110 && GET_MODE_CLASS (MODE2) == MODE_FLOAT)))
/* Specify the registers used for certain standard purposes.
The values of these macros are register numbers. */