aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2005-01-23 08:27:47 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2005-01-23 08:27:47 +0000
commita561d88b9321d5760b40fb53a260345e4701b414 (patch)
tree187cae71a9a56b40b7f5c620f27c57de2cf6991a /gcc/function.c
parentd2ebe27c9a8f400036d9f6a750af21638866c563 (diff)
downloadgcc-a561d88b9321d5760b40fb53a260345e4701b414.zip
gcc-a561d88b9321d5760b40fb53a260345e4701b414.tar.gz
gcc-a561d88b9321d5760b40fb53a260345e4701b414.tar.bz2
function.c (assign_parm_setup_block): When creating a new stack slot for a parameter...
* 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
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 76c1b8e..f0d2ec1 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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);