From: Geoffrey Keating Date: Sat, 6 Sep 2003 04:07:18 +0000 (+0000) Subject: darwin.h (PREFERRED_RELOAD_CLASS): Always return a subset of the input class. X-Git-Tag: releases/gcc-3.4.0~3871 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c55a59cc63a85766588af346a970ca3116c82155;p=thirdparty%2Fgcc.git darwin.h (PREFERRED_RELOAD_CLASS): Always return a subset of the input class. * config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Always return a subset of the input class. From-SVN: r71128 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a2af1cd5c4c8..0d57ffd9c961 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-09-05 Geoffrey Keating + + * config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Always return + a subset of the input class. + 2003-09-05 Kazu Hirata * config/i860/i860.c: Follow spelling conventions. diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index bee77b9299ea..4722826d691a 100644 --- a/gcc/config/rs6000/darwin.h +++ b/gcc/config/rs6000/darwin.h @@ -245,16 +245,17 @@ do { \ a SYMBOL_REF. */ #undef PREFERRED_RELOAD_CLASS -#define PREFERRED_RELOAD_CLASS(X,CLASS) \ - (((GET_CODE (X) == CONST_DOUBLE \ - && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \ - ? NO_REGS \ - : (GET_MODE_CLASS (GET_MODE (X)) == MODE_INT \ - && (CLASS) == NON_SPECIAL_REGS) \ - ? GENERAL_REGS \ - : (GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == HIGH) \ - ? BASE_REGS \ - : (CLASS))) +#define PREFERRED_RELOAD_CLASS(X,CLASS) \ + ((GET_CODE (X) == CONST_DOUBLE \ + && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \ + ? NO_REGS \ + : ((GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == HIGH) \ + && reg_class_subset_p (BASE_REGS, (CLASS))) \ + ? BASE_REGS \ + : (GET_MODE_CLASS (GET_MODE (X)) == MODE_INT \ + && (CLASS) == NON_SPECIAL_REGS) \ + ? GENERAL_REGS \ + : (CLASS)) /* Fix for emit_group_load (): force large constants to be pushed via regs. */ #define ALWAYS_PUSH_CONSTS_USING_REGS_P 1