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
This commit is contained in:
Richard Henderson 2005-07-07 14:04:31 -07:00 committed by Richard Henderson
parent bde1427e3b
commit c7e777b576
2 changed files with 13 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2005-07-07 Richard Henderson <rth@redhat.com>
* function.c (locate_and_pad_parm): Record parameter alignment in
stack_alignment_needed.
2005-07-07 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/rs6000.md (UNSPEC_SYNC, UNSPEC_SYNC_OP,

View file

@ -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)