mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-18 20:09:45 +08:00
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:
parent
743f9f5dfd
commit
c87a0a3994
@ -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>
|
||||
|
||||
* loop.c (strength_reduce): For derived givs, replace the
|
||||
|
@ -963,6 +963,18 @@ assign_stack_temp_for_type (mode, size, keep, type)
|
||||
|
||||
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->align = align;
|
||||
|
Loading…
Reference in New Issue
Block a user