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>
PR middle-end/23971
......
......@@ -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);
/* All of the unordered compare instructions only work on registers.
The same is true of the fcomi compare instructions. The same is
true of the XFmode compare instructions if not comparing with
zero (ftst insn is used in this case). */
The same is true of the fcomi compare instructions. The XFmode
compare instructions require registers except when comparing
against zero or when converting operand 1 from fixed point to
floating point. */
if (!is_sse
&& (fpcmp_mode == CCFPUmode
|| (op_mode == XFmode
&& ! (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)))
{
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