ifcvt: Don't speculation move inline-asm [PR102150]
So unlike loop invariant motion, moving an inline-asm out of an if is not always profitable and the cost estimate for the instruction inside inline-asm is unknown. This is a regression from GCC 4.6 which didn't speculatively move inline-asm as far as I can tell. Bootstrapped and tested on x86_64-linux-gnu. PR rtl-optimization/102150 gcc/ChangeLog: * ifcvt.cc (cheap_bb_rtx_cost_p): Return false if the insn has an inline-asm in it. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
This commit is contained in:
parent
30dfcecddc
commit
aa972d0274
1 changed files with 7 additions and 0 deletions
|
@ -166,6 +166,13 @@ cheap_bb_rtx_cost_p (const_basic_block bb,
|
|||
{
|
||||
if (NONJUMP_INSN_P (insn))
|
||||
{
|
||||
/* Inline-asm's cost is not very estimatable.
|
||||
It could be a costly instruction but the
|
||||
estimate would be the same as a non costly
|
||||
instruction. */
|
||||
if (asm_noperands (PATTERN (insn)) >= 0)
|
||||
return false;
|
||||
|
||||
int cost = insn_cost (insn, speed) * REG_BR_PROB_BASE;
|
||||
if (cost == 0)
|
||||
return false;
|
||||
|
|
Loading…
Add table
Reference in a new issue