summaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.h
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-05 19:25:31 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-05 19:25:31 +0000
commit832db38ba61ebb742b29e9a2b3c51c0a55f236ea (patch)
tree028c3d78f07c6b5c0ef6b04c5a50ca625b2e2ce8 /gcc/config/m68k/m68k.h
parent148b08de94a869cd5b256a341ddfb2c1fb54a8b4 (diff)
downloadgcc-832db38ba61ebb742b29e9a2b3c51c0a55f236ea.tar.gz
(PREFERRED_RELOAD_CLASS): FP constants rejected by 'G' are OK for
class FP_REGS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8395 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68k/m68k.h')
-rw-r--r--gcc/config/m68k/m68k.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index c7ce888f1e3..28a8ac3f23a 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -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