diff options
author | Paul Brook <paul@codesourcery.com> | 2005-12-17 23:32:21 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2005-12-17 23:32:21 +0000 |
commit | 2b3ea5602dc678450df0bed27f46d885b166b04b (patch) | |
tree | 5157ad79e7abfd4ccf30cd31c237daa2c1c50930 /gcc | |
parent | 0e49b89f50be57cdda77fa26c2b16fe02f41053a (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.c | 29 |
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) { |