diff options
author | Paul Brook <paul@codesourcery.com> | 2005-12-17 23:29:21 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2005-12-17 23:29:21 +0000 |
commit | d9e88af0e216994a14d7dbca7f7d227ac03b1365 (patch) | |
tree | 009857b03dae950ea78dcb2270edffe38363f929 /gcc | |
parent | cceb18855ea7d7f2e897858656481174b6da5e93 (diff) | |
download | gcc-d9e88af0e216994a14d7dbca7f7d227ac03b1365.zip gcc-d9e88af0e216994a14d7dbca7f7d227ac03b1365.tar.gz gcc-d9e88af0e216994a14d7dbca7f7d227ac03b1365.tar.bz2 |
m68k.md (m68k_output_function_prologue): Always call dwarf2out_def_cfa.
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.
From-SVN: r108725
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 32 |
2 files changed, 23 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e023f52..a2056a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. + 2005-12-17 Gabriel Dos Reis <gdr@integrable-solutions.net> * tree-inline.c (copy_body_r): Use explicit cast when converting diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 2462bb1..2ef980f 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -559,16 +559,6 @@ m68k_output_function_prologue (FILE *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 */ { @@ -603,13 +593,25 @@ m68k_output_function_prologue (FILE *stream, else /* fsize_with_regs >= 0x8000 */ asm_fprintf (stream, "\tadd" ASM_DOT "l %I%wd,%Rsp\n", -fsize_with_regs); + } /* !frame_pointer_needed */ - if (dwarf2out_do_frame ()) + if (dwarf2out_do_frame ()) + { + if (frame_pointer_needed) { - cfa_offset += current_frame.size + 4; - dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset); - } - } /* !frame_pointer_needed */ + cfa_offset += current_frame.size + 4; + 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; + dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset); + } + } if (current_frame.fpu_mask) { |