From b66a3ac1ad881ca4aae2904adccabd5e8b4add0f Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 16 Sep 1998 08:26:22 -0700 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.h | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8322f543611..2f699a4352e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Sep 16 15:24:54 1998 Richard Henderson + + * i386.h (PREFERRED_RELOAD_CLASS): Respect an existing class + narrower than FLOAT_REGS. + Wed Sep 16 17:51:00 1998 Alexandre Oliva * cpplib.c: removed OLD_GPLUSPLUS_INCLUDE_DIR diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index ec0bf89fa2b..cce3a0bd2ec 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 \ -- 2.30.2