diff options
author | bernie <bernie@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-26 22:19:25 +0000 |
---|---|---|
committer | bernie <bernie@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-26 22:19:25 +0000 |
commit | 7a3ffbb5159838bfdc6bbaca32a9b87dde51c35a (patch) | |
tree | 32c29edcc2f1e1d803054335a65b865a4df28157 /gcc | |
parent | 7dcec20aeb4fa230db85fe2bccdfa58c5707b557 (diff) | |
download | gcc-7a3ffbb5159838bfdc6bbaca32a9b87dde51c35a.tar.gz |
* 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: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72965 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 44 |
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 && |