diff options
| author | hpenner <hpenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-14 10:57:40 +0000 |
|---|---|---|
| committer | hpenner <hpenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-14 10:57:40 +0000 |
| commit | cf7e074454eaa52aedf4ef86e1e2398d39c1f23a (patch) | |
| tree | 0cb5b021f679a40d29821d7139ddf9ec3dec383d | |
| parent | f28414cc7e2c8297a7b728f298b2a6755f9f9795 (diff) | |
| download | ppe42-gcc-cf7e074454eaa52aedf4ef86e1e2398d39c1f23a.tar.gz ppe42-gcc-cf7e074454eaa52aedf4ef86e1e2398d39c1f23a.zip | |
* gcc/config/rs6000/rs6000.c (rs6000_stack_info)
Calculate always vrsave_mask if TARGET_ALTIVEC.
(rs6000_emit_prologue): Emit code for vrsave
only if TARGET_ALTIVEC_VRSAVE.
(rs6000_emit_epilogue): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75857 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/config/rs6000/rs6000.c | 23 |
2 files changed, 20 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06b48518a42..c2e5a06d97a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-01-14 Hartmut Penner <hpenner@de.ibm.com> + + * gcc/config/rs6000/rs6000.c (rs6000_stack_info) + Calculate always vrsave_mask if TARGET_ALTIVEC. + (rs6000_emit_prologue): Emit code for vrsave + only if TARGET_ALTIVEC_VRSAVE. + (rs6000_emit_epilogue): Likewise. + 2004-01-14 Eric Botcazou <ebotcazou@libertysurf.fr> * config/sparc/sparc.md (tie_add32): Fix pasto. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5f24cf86aab..2abd380beca 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -10508,16 +10508,15 @@ rs6000_stack_info (void) else info_ptr->spe_gp_size = 0; - if (TARGET_ALTIVEC_ABI && TARGET_ALTIVEC_VRSAVE) - { - info_ptr->vrsave_mask = compute_vrsave_mask (); - info_ptr->vrsave_size = info_ptr->vrsave_mask ? 4 : 0; - } + if (TARGET_ALTIVEC_ABI) + info_ptr->vrsave_mask = compute_vrsave_mask (); else - { - info_ptr->vrsave_mask = 0; - info_ptr->vrsave_size = 0; - } + info_ptr->vrsave_mask = 0; + + if (TARGET_ALTIVEC_VRSAVE && info_ptr->vrsave_mask) + info_ptr->vrsave_size = 4; + else + info_ptr->vrsave_size = 0; /* Calculate the offsets. */ switch (DEFAULT_ABI) @@ -11679,7 +11678,8 @@ rs6000_emit_prologue (void) used in this function, and do the corresponding magic in the epilogue. */ - if (TARGET_ALTIVEC && info->vrsave_mask != 0) + if (TARGET_ALTIVEC && TARGET_ALTIVEC_VRSAVE + && info->vrsave_mask != 0) { rtx reg, mem, vrsave; int offset; @@ -12141,7 +12141,8 @@ rs6000_emit_epilogue (int sibcall) } /* Restore VRSAVE if needed. */ - if (TARGET_ALTIVEC_ABI && info->vrsave_mask != 0) + if (TARGET_ALTIVEC_ABI && TARGET_ALTIVEC_VRSAVE + && info->vrsave_mask != 0) { rtx addr, mem, reg; |

