diff options
author | Richard Sandiford <richard@codesourcery.com> | 2006-04-27 16:10:09 +0000 |
---|---|---|
committer | Richard Sandiford <richard@codesourcery.com> | 2006-04-27 16:10:09 +0000 |
commit | 7bdc48beb51e7c458190758ebba1a56127cb90ae (patch) | |
tree | 1d3086a40d974f58a771dde919447bf88f915013 | |
parent | fbfb7d59f9fc4ed715afd58c63dc42a8a426a775 (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.csl | 7 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 7 |
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)) |