aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2005-12-17 23:32:21 +0000
committerPaul Brook <paul@codesourcery.com>2005-12-17 23:32:21 +0000
commit2b3ea5602dc678450df0bed27f46d885b166b04b (patch)
tree5157ad79e7abfd4ccf30cd31c237daa2c1c50930 /gcc
parent0e49b89f50be57cdda77fa26c2b16fe02f41053a (diff)
2005-12-17 Paul Brook <paul@codesourcery.com>
* config/m68k/m68k.md (m68k_output_function_prologue): Always call dwarf2out_def_cfa. Only add space for frame pointer to cfa_offset when frame_pointer_needed. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl/coldfire-4_1@108726 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68k.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 2af20a480c3..2926cb1a9cc 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -557,16 +557,6 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
asm_fprintf (stream, "\tlink" ASM_DOTW " %s,%I0\n"
"\tadd" ASM_DOT "l %I%wd,%Rsp\n",
M68K_REGNAME(FRAME_POINTER_REGNUM), -fsize_with_regs);
-
- if (dwarf2out_do_frame ())
- {
- char *l;
- l = (char *) dwarf2out_cfi_label ();
- cfa_offset += 4;
- dwarf2out_reg_save (l, FRAME_POINTER_REGNUM, -cfa_offset);
- dwarf2out_def_cfa (l, FRAME_POINTER_REGNUM, cfa_offset);
- cfa_offset += current_frame.size;
- }
}
else if (fsize_with_regs) /* !frame_pointer_needed */
{
@@ -600,13 +590,26 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
}
else /* fsize_with_regs >= 0x8000 */
asm_fprintf (stream, "\tadd" ASM_DOT "l %I%wd,%Rsp\n", -fsize_with_regs);
+ } /* !frame_pointer_needed && fsize_with_regs*/
- if (dwarf2out_do_frame ())
+
+ if (dwarf2out_do_frame ())
+ {
+ if (frame_pointer_needed)
+ {
+ char *l;
+ l = (char *) dwarf2out_cfi_label ();
+ cfa_offset += 4;
+ dwarf2out_reg_save (l, FRAME_POINTER_REGNUM, -cfa_offset);
+ dwarf2out_def_cfa (l, FRAME_POINTER_REGNUM, cfa_offset);
+ cfa_offset += current_frame.size;
+ }
+ else
{
- cfa_offset += current_frame.size + 4;
+ cfa_offset += current_frame.size;
dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset);
}
- } /* !frame_pointer_needed */
+ }
if (current_frame.fpu_mask)
{