diff options
author | Geoffrey Keating <geoffk@apple.com> | 2007-02-02 01:47:02 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2007-02-02 01:47:02 +0000 |
commit | 9278121c0fc81d81f475a557eae678a7a2c4d23f (patch) | |
tree | dd4f5bc28aa8aa6b2d2671be83c2d4eb5fca5fb5 /gcc | |
parent | 7c40d6662b762339417141ea5da87b3d4b92067c (diff) | |
download | gcc-9278121c0fc81d81f475a557eae678a7a2c4d23f.zip gcc-9278121c0fc81d81f475a557eae678a7a2c4d23f.tar.gz gcc-9278121c0fc81d81f475a557eae678a7a2c4d23f.tar.bz2 |
rs6000.c (rs6000_stack_info): Correct altivec_padding_size calculation on AIX.
* config/rs6000/rs6000.c (rs6000_stack_info): Correct
altivec_padding_size calculation on AIX. Improve comment, add
assert to verify that it's right.
From-SVN: r121485
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7aadf4e..8124079 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2007-02-01 Geoffrey Keating <geoffk@apple.com> + * config/rs6000/rs6000.c (rs6000_stack_info): Correct + altivec_padding_size calculation on AIX. Improve comment, add + assert to verify that it's right. + * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for 64-bit. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index dbb1f55..8c05776 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -13392,10 +13392,11 @@ rs6000_stack_info (void) info_ptr->vrsave_save_offset = info_ptr->gp_save_offset - info_ptr->vrsave_size; - /* Align stack so vector save area is on a quadword boundary. */ + /* Align stack so vector save area is on a quadword boundary. + The padding goes above the vectors. */ if (info_ptr->altivec_size != 0) info_ptr->altivec_padding_size - = (-info_ptr->vrsave_save_offset) % 16; + = info_ptr->vrsave_save_offset & 0xF; else info_ptr->altivec_padding_size = 0; @@ -13403,6 +13404,8 @@ rs6000_stack_info (void) = info_ptr->vrsave_save_offset - info_ptr->altivec_padding_size - info_ptr->altivec_size; + gcc_assert (info_ptr->altivec_size == 0 + || info_ptr->altivec_save_offset % 16 == 0); /* Adjust for AltiVec case. */ info_ptr->ehrd_offset = info_ptr->altivec_save_offset - ehrd_size; |