function.c (assign_parm_setup_block): When creating a new stack slot for a parameter...
authorRichard Sandiford <rsandifo@redhat.com>
Sun, 23 Jan 2005 08:27:47 +0000 (08:27 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 23 Jan 2005 08:27:47 +0000 (08:27 +0000)
* function.c (assign_parm_setup_block): When creating a new stack slot
for a parameter, get its alignment from the parameter's DECL_ALIGN
rather than the type's TYPE_ALIGN.  Make sure that the parameter
is at least word aligned.

From-SVN: r94104

gcc/ChangeLog
gcc/function.c

index 07c5b17c5f2cd965edd8e6dd8d19607dc353478c..d9fc40559dc484d937a34fb819420ead1ef9f055 100644 (file)
@@ -1,3 +1,10 @@
+2005-01-23  Richard Sandiford  <rsandifo@redhat.com>
+
+       * function.c (assign_parm_setup_block): When creating a new stack slot
+       for a parameter, get its alignment from the parameter's DECL_ALIGN
+       rather than the type's TYPE_ALIGN.  Make sure that the parameter
+       is at least word aligned.
+
 2005-01-22  Roger Sayle  <roger@eyesopen.com>
 
        PR middle-end/19378
index 76c1b8e430ff38611c6143da0fb44def4f8fc68d..f0d2ec1110dd249f3f38a1155ca4f3a154ff3d7d 100644 (file)
@@ -2608,8 +2608,9 @@ assign_parm_setup_block (struct assign_parm_data_all *all,
   size_stored = CEIL_ROUND (size, UNITS_PER_WORD);
   if (stack_parm == 0)
     {
+      DECL_ALIGN (parm) = MAX (DECL_ALIGN (parm), BITS_PER_WORD);
       stack_parm = assign_stack_local (BLKmode, size_stored,
-                                      TYPE_ALIGN (data->passed_type));
+                                      DECL_ALIGN (parm));
       if (GET_MODE_SIZE (GET_MODE (entry_parm)) == size)
        PUT_MODE (stack_parm, GET_MODE (entry_parm));
       set_mem_attributes (stack_parm, parm, 1);