From: Richard Henderson Date: Thu, 7 Jul 2005 21:04:31 +0000 (-0700) Subject: function.c (locate_and_pad_parm): Record parameter alignment in stack_alignment_needed. X-Git-Tag: misc/cutover-cvs2svn~1859 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=c7e777b576030f9357a037122e219684da1ad201;p=gcc.git function.c (locate_and_pad_parm): Record parameter alignment in stack_alignment_needed. * function.c (locate_and_pad_parm): Record parameter alignment in stack_alignment_needed. From-SVN: r101732 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1536408978b2..dbc36f7e2b41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-07-07 Richard Henderson + + * function.c (locate_and_pad_parm): Record parameter alignment in + stack_alignment_needed. + 2005-07-07 David Edelsohn * config/rs6000/rs6000.md (UNSPEC_SYNC, UNSPEC_SYNC_OP, diff --git a/gcc/function.c b/gcc/function.c index 1979185fd74a..3fcc8b86089c 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3256,7 +3256,7 @@ locate_and_pad_parm (enum machine_mode passed_mode, tree type, int in_regs, { tree sizetree; enum direction where_pad; - int boundary; + unsigned int boundary; int reg_parm_stack_space = 0; int part_size_in_regs; @@ -3291,6 +3291,13 @@ locate_and_pad_parm (enum machine_mode passed_mode, tree type, int in_regs, locate->where_pad = where_pad; locate->boundary = boundary; + /* Remember if the outgoing parameter requires extra alignment on the + calling function side. */ + if (boundary > PREFERRED_STACK_BOUNDARY) + boundary = PREFERRED_STACK_BOUNDARY; + if (cfun->stack_alignment_needed < boundary) + cfun->stack_alignment_needed = boundary; + #ifdef ARGS_GROW_DOWNWARD locate->slot_offset.constant = -initial_offset_ptr->constant; if (initial_offset_ptr->var)