function.c (assign_stack_temp_for_type): Round SIZE before calling assign_stack_local for BLKmode slots.

* function.c (assign_stack_temp_for_type): Round SIZE before calling
        assign_stack_local for BLKmode slots.

From-SVN: r25290
This commit is contained in:
Jeffrey A Law 1999-02-18 17:51:58 +00:00 committed by Jeff Law
parent 743f9f5dfd
commit c87a0a3994
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Thu Feb 18 18:47:09 1999 Jeffrey A Law (law@cygnus.com)
* function.c (assign_stack_temp_for_type): Round SIZE before calling
assign_stack_local for BLKmode slots.
Fri Feb 19 01:45:06 1999 J"orn Rennecke <amylaar@cygnus.co.uk> Fri Feb 19 01:45:06 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* loop.c (strength_reduce): For derived givs, replace the * loop.c (strength_reduce): For derived givs, replace the

View File

@ -963,6 +963,18 @@ assign_stack_temp_for_type (mode, size, keep, type)
p = (struct temp_slot *) oballoc (sizeof (struct temp_slot)); p = (struct temp_slot *) oballoc (sizeof (struct temp_slot));
/* We are passing an explicit alignment request to assign_stack_local.
One side effect of that is assign_stack_local will not round SIZE
to ensure the frame offset remains suitably aligned.
So for requests which depended on the rounding of SIZE, we go ahead
and round it now. We also make sure ALIGNMENT is at least
BIGGEST_ALIGNMENT. */
if (mode == BLKmode)
{
align = MAX (align, BIGGEST_ALIGNMENT / BITS_PER_UNIT);
size = CEIL_ROUND (size, align);
}
p->slot = assign_stack_local (mode, size, align); p->slot = assign_stack_local (mode, size, align);
p->align = align; p->align = align;