aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-09-16 08:26:22 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-09-16 08:26:22 -0700
commitb66a3ac1ad881ca4aae2904adccabd5e8b4add0f (patch)
treeaf96072d5b18abed69b965338890b8fcc2d3cf53 /gcc
parent0d7138a12fe4113b3dabeb5c46090397996f246f (diff)
downloadgcc-b66a3ac1ad881ca4aae2904adccabd5e8b4add0f.zip
gcc-b66a3ac1ad881ca4aae2904adccabd5e8b4add0f.tar.gz
gcc-b66a3ac1ad881ca4aae2904adccabd5e8b4add0f.tar.bz2
i386.h (PREFERRED_RELOAD_CLASS): Respect an existing class narrower than FLOAT_REGS.
* i386.h (PREFERRED_RELOAD_CLASS): Respect an existing class narrower than FLOAT_REGS. From-SVN: r22454
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.h8
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8322f54..2f699a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Sep 16 15:24:54 1998 Richard Henderson <rth@cygnus.com>
+
+ * i386.h (PREFERRED_RELOAD_CLASS): Respect an existing class
+ narrower than FLOAT_REGS.
+
Wed Sep 16 17:51:00 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
* cpplib.c: removed OLD_GPLUSPLUS_INCLUDE_DIR
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index ec0bf89..cce3a0b 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -931,9 +931,11 @@ enum reg_class
Narrow ALL_REGS to GENERAL_REGS. This supports allowing movsf and
movdf to do mem-to-mem moves through integer regs. */
-#define PREFERRED_RELOAD_CLASS(X,CLASS) \
- (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode \
- ? (standard_80387_constant_p (X) ? FLOAT_REGS : NO_REGS) \
+#define PREFERRED_RELOAD_CLASS(X,CLASS) \
+ (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode \
+ ? (standard_80387_constant_p (X) \
+ ? reg_class_subset_p (CLASS, FLOAT_REGS) ? CLASS : FLOAT_REGS \
+ : NO_REGS) \
: GET_MODE (X) == QImode && ! reg_class_subset_p (CLASS, Q_REGS) ? Q_REGS \
: ((CLASS) == ALL_REGS \
&& GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) ? GENERAL_REGS \