diff options
author | Richard Stallman <rms@gnu.org> | 1992-06-14 22:15:08 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-06-14 22:15:08 +0000 |
commit | f21d67da84985ebd2beaf1c8ca00db461eaa70a9 (patch) | |
tree | edfe56d4691927310937f8f5dc5eb387251dcd33 | |
parent | 96b5daff8d4667cf475ac0d749da20524a93a275 (diff) | |
download | gcc-f21d67da84985ebd2beaf1c8ca00db461eaa70a9.zip gcc-f21d67da84985ebd2beaf1c8ca00db461eaa70a9.tar.gz gcc-f21d67da84985ebd2beaf1c8ca00db461eaa70a9.tar.bz2 |
(PREFERRED_RELOAD_CLASS): Avoid f regs for HI and QI if poss.
From-SVN: r1205
-rw-r--r-- | gcc/config/i860/i860.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/config/i860/i860.h b/gcc/config/i860/i860.h index dd2c6a8..3ebcf70 100644 --- a/gcc/config/i860/i860.h +++ b/gcc/config/i860/i860.h @@ -350,10 +350,16 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES }; integer register to an FP register. If we are trying to put a non-zero floating-point constant into some register, use an integer register if the constant is SFmode and GENERAL_REGS is one of our options. - Otherwise, put the constant into memory. */ + Otherwise, put the constant into memory. + + When reloading something smaller than a word, use a general reg + rather than an FP reg. */ #define PREFERRED_RELOAD_CLASS(X,CLASS) \ ((CLASS) == ALL_REGS && GET_CODE (X) == CONST_INT ? GENERAL_REGS \ + : ((GET_MODE (X) == HImode || GET_MODE (X) == QImode) \ + && (CLASS) == ALL_REGS) \ + ? GENERAL_REGS \ : (GET_CODE (X) == CONST_DOUBLE \ && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \ && ! CONST_DOUBLE_OK_FOR_LETTER_P (X, 'G')) \ |