aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2006-04-27 16:10:09 +0000
committerRichard Sandiford <richard@codesourcery.com>2006-04-27 16:10:09 +0000
commit7bdc48beb51e7c458190758ebba1a56127cb90ae (patch)
tree1d3086a40d974f58a771dde919447bf88f915013
parentfbfb7d59f9fc4ed715afd58c63dc42a8a426a775 (diff)
gcc/
* config/m68k/m68k.c (m68k_output_function_prologue): Fix handling of %sp-based CFA offsets on Coldfire. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl/coldfire-4_1@113303 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog.csl7
-rw-r--r--gcc/config/m68k/m68k.c7
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index 20b4b9f276c..8b06a0e0a24 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,5 +1,12 @@
2006-04-27 Richard Sandiford <richard@codesourcery.com>
+ gcc/
+ * config/m68k/m68k.c (m68k_output_function_prologue): Fix handling
+ of %sp-based CFA offsets on Coldfire.
+
+2006-04-27 Richard Sandiford <richard@codesourcery.com>
+
+ gcc/
* config/m68k/m68k-cores.def (68000, 68010): Remove FL_PCREL_16
from these isa_00 entries.
(68020, 68030): Remove FL_BITFIELD from these isa_20 entries.
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 5493bcade98..1ea90491e66 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -917,8 +917,9 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
}
else
{
+ dwarf2out_def_cfa ("", STACK_POINTER_REGNUM,
+ cfa_offset + fsize_with_regs);
cfa_offset += current_frame.size;
- dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset);
}
}
@@ -958,7 +959,7 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
int n_regs, regno;
cfa_offset += current_frame.fpu_no * TARGET_FP_REG_SIZE;
- if (! frame_pointer_needed)
+ if (TARGET_68881 && !frame_pointer_needed)
dwarf2out_def_cfa (l, STACK_POINTER_REGNUM, cfa_offset);
for (regno = 16, n_regs = 0; regno < 24; regno++)
if (current_frame.fpu_mask & (1 << (regno - 16)))
@@ -1029,7 +1030,7 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
int n_regs, regno;
cfa_offset += current_frame.reg_no * 4;
- if (! frame_pointer_needed)
+ if (!m68k_arch_coldfire && !frame_pointer_needed)
dwarf2out_def_cfa (l, STACK_POINTER_REGNUM, cfa_offset);
for (regno = 0, n_regs = 0; regno < 16; regno++)
if (current_frame.reg_mask & (1 << regno))