From 0273f32645e1c69ccc7a61a5364683dcf4546c62 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 25 Mar 1994 14:50:09 -0500 Subject: [PATCH] (output_prolog): Correctly compute floating-reg save area offset. From-SVN: r6899 --- gcc/config/alpha/alpha.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 3a1977e18e1..855e5e563bf 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1214,6 +1214,7 @@ output_prolog (file, size) HOST_WIDE_INT reg_offset = vars_size + current_function_outgoing_args_size; HOST_WIDE_INT start_reg_offset = reg_offset; HOST_WIDE_INT actual_start_reg_offset = start_reg_offset; + int int_reg_save_area_size = 0; rtx insn; int reg_offset_base_reg = 30; unsigned reg_mask = 0; @@ -1358,6 +1359,7 @@ output_prolog (file, size) reg_mask |= 1 << 26; fprintf (file, "\tstq $26,%d($%d)\n", reg_offset, reg_offset_base_reg); reg_offset += 8; + int_reg_save_area_size += 8; } /* Now save any other used integer registers required to be saved. */ @@ -1368,6 +1370,7 @@ output_prolog (file, size) fprintf (file, "\tstq $%d,%d($%d)\n", i, reg_offset, reg_offset_base_reg); reg_offset += 8; + int_reg_save_area_size += 8; } /* Print the register mask and do floating-point saves. */ @@ -1390,7 +1393,8 @@ output_prolog (file, size) /* Print the floating-point mask, if we've saved any fp register. */ if (reg_mask) - fprintf (file, "\t.fmask 0x%x,%d\n", reg_mask, actual_start_reg_offset); + fprintf (file, "\t.fmask 0x%x,%d\n", reg_mask, + actual_start_reg_offset - frame_size + int_reg_save_area_size); /* If we need a frame pointer, set it from the stack pointer. Note that this must always be the last instruction in the prologue. */ -- 2.30.2