diff options
author | pthaugen <pthaugen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-07 19:27:09 +0000 |
---|---|---|
committer | pthaugen <pthaugen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-07 19:27:09 +0000 |
commit | d9350d7ab054bc493b7bede7fad3291ebd705939 (patch) | |
tree | 0d3c2626b631f76c34cb8a64c70b259c965000d6 /gcc/config/rs6000/rs6000.h | |
parent | 27fcec499457b0104e118b0280e17ee2bdc57502 (diff) | |
download | gcc-d9350d7ab054bc493b7bede7fad3291ebd705939.tar.gz |
PR target/47862
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
* config/rs6000/e500.h (HARD_REGNO_CALLER_SAVE_MODE): Undefine
before definition.
* testsuite/gcc.target/powerpc/pr47862.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170748 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/rs6000.h')
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 98ec24c75eb..49134568b71 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1005,6 +1005,16 @@ extern unsigned rs6000_pointer_size; #define HARD_REGNO_NREGS(REGNO, MODE) rs6000_hard_regno_nregs[(MODE)][(REGNO)] +/* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate + enough space to account for vectors in FP regs. */ +#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ + (TARGET_VSX \ + && ((MODE) == VOIDmode || VSX_VECTOR_MODE (MODE) \ + || ALTIVEC_VECTOR_MODE (MODE)) \ + && FP_REGNO_P (REGNO) \ + ? V2DFmode \ + : choose_hard_reg_mode ((REGNO), (NREGS), false)) + #define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \ (((TARGET_32BIT && TARGET_POWERPC64 \ && (GET_MODE_SIZE (MODE) > 4) \ |