i386.c (output_to_reg): Add code to emulate non-popping DImode case.

�
        * i386.c (output_to_reg): Add code to emulate non-popping DImode
        case.

From-SVN: r21389
This commit is contained in:
H.J. Lu 1998-07-26 00:12:12 +00:00 committed by Jeff Law
parent bc6bd744c5
commit 60aeab7f32
2 changed files with 16 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Sun Jul 26 01:11:12 1998 H.J. Lu (hjl@gnu.org)
* i386.c (output_to_reg): Add code to emulate non-popping DImode
case.
Sun Jul 26 01:01:32 1998 Jeffrey A Law (law@cygnus.com)
* regmove.c (regmove_optimize): Fix typo initializing regmove_bb_head.

View File

@ -891,6 +891,17 @@ output_to_reg (dest, dies, scratch_mem)
{
if (dies)
output_asm_insn (AS1 (fistp%z3,%y0), xops);
else if (GET_MODE (xops[3]) == DImode && ! dies)
{
/* There is no DImode version of this without a stack pop, so
we must emulate it. It doesn't matter much what the second
instruction is, because the value being pushed on the FP stack
is not used except for the following stack popping store.
This case can only happen without optimization, so it doesn't
matter that it is inefficient. */
output_asm_insn (AS1 (fistp%z3,%0), xops);
output_asm_insn (AS1 (fild%z3,%0), xops);
}
else
output_asm_insn (AS1 (fist%z3,%y0), xops);
}