Commit f277471f by Richard Kenner

(output_function_{pro,epi}logue): Save and restore fp-registers only

if TARGET_68881.

From-SVN: r13145
parent d8db8192
...@@ -255,18 +255,21 @@ output_function_prologue (stream, size) ...@@ -255,18 +255,21 @@ output_function_prologue (stream, size)
#endif #endif
} }
#endif #endif
for (regno = 16; regno < 24; regno++) if (TARGET_68881)
if (regs_ever_live[regno] && ! call_used_regs[regno])
mask |= 1 << (regno - 16);
if ((mask & 0xff) != 0)
{ {
for (regno = 16; regno < 24; regno++)
if (regs_ever_live[regno] && ! call_used_regs[regno])
mask |= 1 << (regno - 16);
if ((mask & 0xff) != 0)
{
#ifdef MOTOROLA #ifdef MOTOROLA
asm_fprintf (stream, "\tfmovm %0I0x%x,-(%Rsp)\n", mask & 0xff); asm_fprintf (stream, "\tfmovm %0I0x%x,-(%Rsp)\n", mask & 0xff);
#else #else
asm_fprintf (stream, "\tfmovem %0I0x%x,%Rsp@-\n", mask & 0xff); asm_fprintf (stream, "\tfmovem %0I0x%x,%Rsp@-\n", mask & 0xff);
#endif #endif
}
mask = 0;
} }
mask = 0;
for (regno = 0; regno < 16; regno++) for (regno = 0; regno < 16; regno++)
if (regs_ever_live[regno] && ! call_used_regs[regno]) if (regs_ever_live[regno] && ! call_used_regs[regno])
{ {
...@@ -428,12 +431,15 @@ output_function_epilogue (stream, size) ...@@ -428,12 +431,15 @@ output_function_epilogue (stream, size)
fpoffset = nregs * 8; fpoffset = nregs * 8;
#endif #endif
nregs = 0; nregs = 0;
for (regno = 16; regno < 24; regno++) if (TARGET_68881)
if (regs_ever_live[regno] && ! call_used_regs[regno]) {
{ for (regno = 16; regno < 24; regno++)
nregs++; if (regs_ever_live[regno] && ! call_used_regs[regno])
fmask |= 1 << (23 - regno); {
} nregs++;
fmask |= 1 << (23 - regno);
}
}
foffset = fpoffset + nregs * 12; foffset = fpoffset + nregs * 12;
nregs = 0; mask = 0; nregs = 0; mask = 0;
if (frame_pointer_needed) if (frame_pointer_needed)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment