From: H.J. Lu Date: Sun, 26 Jul 1998 00:13:01 +0000 (+0000) Subject: i386.c (output_to_reg): Add code to emulate non-popping DImode case. X-Git-Tag: prereleases/egcs-1.1-prerelease~170 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d3d79c8557f85b14dd9e3e6393ef56119c252f7;p=thirdparty%2Fgcc.git 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: r21390 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed3ade8a40ec..85d36f68cafc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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:02:54 1998 Jeffrey A Law (law@cygnus.com) * regmove.c (regmove_optimize): Fix typo initializing regmove_bb_head. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 76f5370f410e..8e5211f13379 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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); }