aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i960/i960.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e2878ac..c426cb6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-03-14 DJ Delorie <dj@redhat.com>
+ Vladimir Makarov <vmakarov@redhat.com>
+
+ * config/i960/i960.c (i960_function_prologue): Compute size of
+ frame according to number of registers actually saved there.
+
2001-03-14 Richard Henderson <rth@redhat.com>
* expr.c (emit_move_insn_1): Fix else if around #endif.
diff --git a/gcc/config/i960/i960.c b/gcc/config/i960/i960.c
index 21753a2..1f885fe 100644
--- a/gcc/config/i960/i960.c
+++ b/gcc/config/i960/i960.c
@@ -1474,7 +1474,7 @@ i960_function_prologue (file, size)
lnw = i960_split_reg_group (l, lnw, g->length);
}
- actual_fsize = compute_frame_size (size);
+ actual_fsize = compute_frame_size (size) + 4 * n_remaining_saved_regs;
#if 0
/* ??? The 1.2.1 compiler does this also. This is meant to round the frame
size up to the nearest multiple of 16. I don't know whether this is
@@ -1526,7 +1526,7 @@ i960_function_prologue (file, size)
/* Take hardware register save area created by the call instruction
into account, but store them before the argument block area. */
- lvar_size = actual_fsize - compute_frame_size (0) - n_saved_regs * 4;
+ lvar_size = actual_fsize - compute_frame_size (0) - n_remaining_saved_regs * 4;
offset = STARTING_FRAME_OFFSET + lvar_size;
/* Save registers on stack if needed. */
/* ??? Is it worth to use the same algorithm as one for saving