Commit d06e6434 by Uros Bizjak Committed by Ian Lance Taylor

re PR target/22585 (ICE with long doubles in expand_simple_unop)

	PR target/22585
	* config/i386/i386.c (ix86_prepare_fp_compare_args): Do not
	force integer op1 into register for XFmode compares.

From-SVN: r104498
parent 604a4937
2005-09-21 Uros Bizjak <uros@kss-loka.si>
PR target/22585
* config/i386/i386.c (ix86_prepare_fp_compare_args): Do not
force integer op1 into register for XFmode compares.
2005-09-21 Kazu Hirata <kazu@codesourcery.com> 2005-09-21 Kazu Hirata <kazu@codesourcery.com>
PR middle-end/23971 PR middle-end/23971
......
...@@ -9065,15 +9065,17 @@ ix86_prepare_fp_compare_args (enum rtx_code code, rtx *pop0, rtx *pop1) ...@@ -9065,15 +9065,17 @@ ix86_prepare_fp_compare_args (enum rtx_code code, rtx *pop0, rtx *pop1)
int is_sse = TARGET_SSE_MATH && SSE_FLOAT_MODE_P (op_mode); int is_sse = TARGET_SSE_MATH && SSE_FLOAT_MODE_P (op_mode);
/* All of the unordered compare instructions only work on registers. /* All of the unordered compare instructions only work on registers.
The same is true of the fcomi compare instructions. The same is The same is true of the fcomi compare instructions. The XFmode
true of the XFmode compare instructions if not comparing with compare instructions require registers except when comparing
zero (ftst insn is used in this case). */ against zero or when converting operand 1 from fixed point to
floating point. */
if (!is_sse if (!is_sse
&& (fpcmp_mode == CCFPUmode && (fpcmp_mode == CCFPUmode
|| (op_mode == XFmode || (op_mode == XFmode
&& ! (standard_80387_constant_p (op0) == 1 && ! (standard_80387_constant_p (op0) == 1
|| standard_80387_constant_p (op1) == 1)) || standard_80387_constant_p (op1) == 1)
&& GET_CODE (op1) != FLOAT)
|| ix86_use_fcomi_compare (code))) || ix86_use_fcomi_compare (code)))
{ {
op0 = force_reg (op_mode, op0); op0 = force_reg (op_mode, op0);
......
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