aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2005-12-17 23:29:21 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2005-12-17 23:29:21 +0000
commitd9e88af0e216994a14d7dbca7f7d227ac03b1365 (patch)
tree009857b03dae950ea78dcb2270edffe38363f929 /gcc
parentcceb18855ea7d7f2e897858656481174b6da5e93 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/m68k/m68k.c32
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)
{