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:
parent
b27788aa43
commit
7f22b9fca4
@ -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.
|
||||
|
12
gcc/ifcvt.c
12
gcc/ifcvt.c
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user