(PREFERRED_RELOAD_CLASS): Avoid f regs for HI and QI if poss.
authorRichard Stallman <rms@gnu.org>
Sun, 14 Jun 1992 22:15:08 +0000 (22:15 +0000)
committerRichard Stallman <rms@gnu.org>
Sun, 14 Jun 1992 22:15:08 +0000 (22:15 +0000)
From-SVN: r1205

gcc/config/i860/i860.h

index dd2c6a8adb5eace98f75fa6f2559f59a2ea96748..3ebcf70a6f92525ed1ff0ed934d5c1373bfddaf1 100644 (file)
@@ -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'))                      \