(assign_stack_temp): Compute size of slot after

assign_stack_local has accounted for alignment.

From-SVN: r8438
This commit is contained in:
Doug Evans 1994-11-15 14:55:15 +00:00
parent ce3b287975
commit b2a80c0d2b
1 changed files with 11 additions and 1 deletions

View File

@ -856,11 +856,21 @@ assign_stack_temp (mode, size, keep)
/* If we still didn't find one, make a new temporary. */
if (p == 0)
{
int frame_offset_old = frame_offset;
p = (struct temp_slot *) oballoc (sizeof (struct temp_slot));
p->size = size;
/* If the temp slot mode doesn't indicate the alignment,
use the largest possible, so no one will be disappointed. */
p->slot = assign_stack_local (mode, size, mode == BLKmode ? -1 : 0);
/* The following slot size computation is necessary because we don't
know the actual size of the temporary slot until assign_stack_local
has performed all the frame alignment and size rounding for the
requested temporary. Otherwise combine_temp_slots won't think that
adjacent slots really are adjacent. */
#ifdef FRAME_GROWS_DOWNWARD
p->size = frame_offset_old - frame_offset;
#else
p->size = frame_offset - frame_offset_old;
#endif
p->address = 0;
p->next = temp_slots;
temp_slots = p;