diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-07-28 09:09:22 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-07-28 09:09:22 -0400 |
commit | 307d8cd67d3339e79da8160b95eed56cabe6d37e (patch) | |
tree | a5be8f8855c5a404c95ef5e128b1bc199daf2cb3 | |
parent | e4931540c01b99ec06bbc5fb83f3c68228042221 (diff) | |
download | gcc-307d8cd67d3339e79da8160b95eed56cabe6d37e.zip gcc-307d8cd67d3339e79da8160b95eed56cabe6d37e.tar.gz gcc-307d8cd67d3339e79da8160b95eed56cabe6d37e.tar.bz2 |
(assign_stack_temp): When split a slot, set base_offset and full_size in the newly created slot.
(assign_stack_temp): When split a slot, set base_offset and full_size in the
newly created slot.
(combine_temp_slots): Update full_size when slots are combined.
From-SVN: r10185
-rw-r--r-- | gcc/function.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c index 00790b26..acf46ce 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -847,6 +847,8 @@ assign_stack_temp (mode, size, keep) p = (struct temp_slot *) oballoc (sizeof (struct temp_slot)); p->in_use = p->addr_taken = 0; p->size = best_p->size - rounded_size; + p->base_offset = best_p->base_offset + rounded_size; + p->full_size = best_p->full_size - rounded_size; p->slot = gen_rtx (MEM, BLKmode, plus_constant (XEXP (best_p->slot, 0), rounded_size)); @@ -942,12 +944,14 @@ combine_temp_slots () { /* Q comes after P; combine Q into P. */ p->size += q->size; + p->full_size += q->full_size; delete_q = 1; } else if (q->base_offset + q->full_size == p->base_offset) { /* P comes after Q; combine P into Q. */ q->size += p->size; + q->full_size += p->full_size; delete_p = 1; break; } |