OSDN Git Service

(PREFERRED_RELOAD_CLASS): FP constants rejected by 'G' are OK for
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Nov 1994 19:25:31 +0000 (19:25 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 5 Nov 1994 19:25:31 +0000 (19:25 +0000)
class FP_REGS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8395 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/m68k/m68k.h

index c7ce888..28a8ac3 100644 (file)
@@ -677,8 +677,9 @@ extern enum reg_class regno_reg_class[];
    On the 68000 series, use a data reg if possible when the
    value is a constant in the range where moveq could be used
    and we ensure that QImodes are reloaded into data regs.
-   Also, if a floating constant needs reloading, put it in memory
-   if possible.  */
+   Also, if a floating constant needs reloading, put it in memory.
+   Don't do this for !G constants, since all patterns in the md file
+   expect them to be loaded into a register via fpmovecr.  See above.  */
 
 #define PREFERRED_RELOAD_CLASS(X,CLASS)  \
   ((GET_CODE (X) == CONST_INT                  \
@@ -689,7 +690,9 @@ extern enum reg_class regno_reg_class[];
    ? DATA_REGS                                 \
    : (GET_CODE (X) == CONST_DOUBLE             \
       && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \
-   ? NO_REGS                                   \
+   ? (! CONST_DOUBLE_OK_FOR_LETTER_P (X, 'G')  \
+      && CLASS == FP_REGS                      \
+      ? FP_REGS : NO_REGS)                     \
    : (CLASS))
 
 /* Return the maximum number of consecutive registers