]> gcc.gnu.org Git - gcc.git/commitdiff
function.c (locate_and_pad_parm): Record parameter alignment in stack_alignment_needed.
authorRichard Henderson <rth@redhat.com>
Thu, 7 Jul 2005 21:04:31 +0000 (14:04 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 7 Jul 2005 21:04:31 +0000 (14:04 -0700)
        * function.c (locate_and_pad_parm): Record parameter alignment in
        stack_alignment_needed.

From-SVN: r101732

gcc/ChangeLog
gcc/function.c

index 1536408978b2cd8ea6b9a119123c2c57e8389c17..dbc36f7e2b41ed1b9d3ca2f9d18d1267a5fb743d 100644 (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,
index 1979185fd74a17463105001f9a381fb6fb1b1e98..3fcc8b86089c86bd356e82169053070e89bff670 100644 (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)
This page took 0.069148 seconds and 5 git commands to generate.