diff options
author | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-06 04:07:18 +0000 |
---|---|---|
committer | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-06 04:07:18 +0000 |
commit | b62f104a7d11ee501f7557a21e298df944bd4629 (patch) | |
tree | 4fa040537c7e177299dcd331c1154a1f51da75bf /gcc/config/rs6000/darwin.h | |
parent | 832fdf0cc06056aca6b79a5e718c3a8f483dd7ee (diff) | |
download | gcc-b62f104a7d11ee501f7557a21e298df944bd4629.tar.gz |
* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Always return
a subset of the input class.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71128 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/darwin.h')
-rw-r--r-- | gcc/config/rs6000/darwin.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h index bee77b9299e..4722826d691 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 |