Hi All, This fix is aimed to remove performance degradation introduced by new LRA phase that in fact is combining problem. Gcc combiner does propagation of memory load to if-then-else gimple that was splitted back by old reload phase. LRA does not perform such splitting. To avoid performance slowdown on important benchmark (this is true for all x86 targets) we decided to enhance 'ix86_legitimate_combined_insn' with a check on such propagation and consider such conditional instruction with memory operand as illegal one from performance point of view.
The fix was bootstrapped and regtested for x86-64. Is it OK for 4.8 and mainline? ChangeLog: 2012-12-12 Yuri Rumyantsev <ysrum...@gmail.com> * config/i386/i386.c (ix86_legitimate_combined_insn) : Avoid combining of load and if_then_else instructions.
x86-cmove-combine-fix.diff
Description: Binary data