From 9278121c0fc81d81f475a557eae678a7a2c4d23f Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Fri, 2 Feb 2007 01:47:02 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/config/rs6000/rs6000.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7aadf4e6930..8124079c729 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2007-02-01 Geoffrey Keating + * 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 dbb1f550f97..8c05776796f 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;