ifcvt.c (cheap_bb_rtx_cost_p): Don't speculatively execute x87 instructions.

* ifcvt.c (cheap_bb_rtx_cost_p): Don't speculatively execute
	x87 instructions.

From-SVN: r116501
This commit is contained in:
Roger Sayle 2006-08-28 00:58:47 +00:00 committed by Roger Sayle
parent b27788aa43
commit 7f22b9fca4
2 changed files with 12 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2006-08-27 Roger Sayle <roger@eyesopen.com>
* ifcvt.c (cheap_bb_rtx_cost_p): Don't speculatively execute
x87 instructions.
2006-08-27 Kazu Hirata <kazu@codesourcery.com>
* config/i386/crtfastmath.c: Fix a comment typo.

View File

@ -1,5 +1,5 @@
/* If-conversion support.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This file is part of GCC.
@ -153,14 +153,16 @@ cheap_bb_rtx_cost_p (basic_block bb, int max_cost)
/* If this instruction is the load or set of a "stack" register,
such as a floating point register on x87, then the cost of
speculatively executing this instruction needs to include
the additional cost of popping this register off of the
register stack. */
speculatively executing this insn may need to include
the additional cost of popping its result off of the
register stack. Unfortunately, correctly recognizing and
accounting for this additional overhead is tricky, so for
now we simply prohibit such speculative execution. */
#ifdef STACK_REGS
{
rtx set = single_set (insn);
if (set && STACK_REG_P (SET_DEST (set)))
cost += COSTS_N_INSNS (1);
return false;
}
#endif