aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2007-02-02 01:47:02 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2007-02-02 01:47:02 +0000
commit9278121c0fc81d81f475a557eae678a7a2c4d23f (patch)
treedd4f5bc28aa8aa6b2d2671be83c2d4eb5fca5fb5 /gcc
parent7c40d6662b762339417141ea5da87b3d4b92067c (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/config/rs6000/rs6000.c7
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;