aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGunther Nikl <gni@gecko.de>2003-10-26 22:19:25 +0000
committerBernardo Innocenti <bernie@develer.com>2003-10-26 22:19:25 +0000
commit0835d7122cbada526a2017b5ee6bddeddff0578e (patch)
tree32c29edcc2f1e1d803054335a65b865a4df28157
parentb26345ca58329673de381ccd3eab21cb33a2640b (diff)
* config/m68k/m68k.c (m68k_compute_frame_layout): Ensure FPU related
frame information is always valid. (m68k_output_function_prologue): Remove superfluous TARGET_68881 test; fix formatting. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@72965 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/m68k/m68k.c44
2 files changed, 27 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 794acfd9c91..7d25e3309eb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2003-10-26 Gunther Nikl <gni@gecko.de>
+ * config/m68k/m68k.c (m68k_compute_frame_layout): Ensure FPU related
+ frame information is always valid.
+ (m68k_output_function_prologue): Remove superfluous TARGET_68881
+ test; fix formatting.
+
+2003-10-26 Gunther Nikl <gni@gecko.de>
+
* config/m68k/m68k.c (m68k_compute_frame_layout): Swap reg_mask and
reg_rev_mask computation.
(m68k_output_function_prologue): Fix usage of current_frame (one typo
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 64c8c9c62dc..565e41ff7cd 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -352,9 +352,10 @@ m68k_compute_frame_layout (void)
current_frame.reg_mask = mask;
current_frame.reg_rev_mask = rmask;
+ current_frame.foffset = 0;
+ mask = rmask = saved = 0;
if (TARGET_68881 /* || TARGET_CFV4E */)
{
- mask = rmask = saved = 0;
for (regno = 16; regno < 24; regno++)
if (m68k_save_reg (regno, interrupt_handler))
{
@@ -364,10 +365,10 @@ m68k_compute_frame_layout (void)
}
current_frame.foffset = saved * 12 /* (TARGET_CFV4E ? 8 : 12) */;
current_frame.offset += current_frame.foffset;
- current_frame.fpu_no = saved;
- current_frame.fpu_mask = mask;
- current_frame.fpu_rev_mask = rmask;
}
+ current_frame.fpu_no = saved;
+ current_frame.fpu_mask = mask;
+ current_frame.fpu_rev_mask = rmask;
/* Remember what function this frame refers to. */
current_frame.funcdef_no = current_function_funcdef_no;
@@ -603,28 +604,24 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
}
} /* !frame_pointer_needed */
- if (TARGET_68881)
+ if (current_frame.fpu_mask)
{
- if (current_frame.fpu_mask)
- {
#ifdef MOTOROLA
- asm_fprintf (stream, "\tfmovm %I0x%x,-(%Rsp)\n", current_frame.fpu_mask);
+ asm_fprintf (stream, "\tfmovm %I0x%x,-(%Rsp)\n", current_frame.fpu_mask);
#else
- asm_fprintf (stream, "\tfmovem %I0x%x,%Rsp@-\n", current_frame.fpu_mask);
+ asm_fprintf (stream, "\tfmovem %I0x%x,%Rsp@-\n", current_frame.fpu_mask);
#endif
- if (dwarf2out_do_frame ())
- {
- char *l = (char *) dwarf2out_cfi_label ();
- int n_regs, regno;
-
- cfa_offset += current_frame.fpu_no * 12;
- if (! 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)))
- dwarf2out_reg_save (l, regno,
- -cfa_offset + n_regs++ * 12);
- }
+ if (dwarf2out_do_frame ())
+ {
+ char *l = (char *) dwarf2out_cfi_label ();
+ int n_regs, regno;
+
+ cfa_offset += current_frame.fpu_no * 12;
+ if (! 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)))
+ dwarf2out_reg_save (l, regno, -cfa_offset + n_regs++ * 12);
}
}
@@ -710,8 +707,7 @@ m68k_output_function_prologue (FILE *stream, HOST_WIDE_INT size ATTRIBUTE_UNUSED
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))
- dwarf2out_reg_save (l, regno,
- -cfa_offset + n_regs++ * 4);
+ dwarf2out_reg_save (l, regno, -cfa_offset + n_regs++ * 4);
}
}
if (!TARGET_SEP_DATA && flag_pic &&