http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56309
--- Comment #18 from Uros Bizjak <ubizjak at gmail dot com> 2013-02-14 18:23:12 UTC --- Following patch is a big hammer approach to the problem, intended only for benchmarking --cut here-- Index: common/config/i386/i386-common.c =================================================================== --- common/config/i386/i386-common.c (revision 195988) +++ common/config/i386/i386-common.c (working copy) @@ -710,6 +710,8 @@ /* Turn off -fschedule-insns by default. It tends to make the problem with not enough registers even worse. */ { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 }, + /* Turn off -ftree-loop-if-convert by default. */ + { OPT_LEVELS_ALL, OPT_ftree_loop_if_convert, NULL, 0 }, #ifdef SUBTARGET_OPTIMIZATION_OPTIONS SUBTARGET_OPTIMIZATION_OPTIONS, --cut here-- OTOH, it looks that on x86, the only problematic insns are scalar integer cmov instructions. With some (machine dependant ?) pass inserted at the right spot in the sequence of passes, appropriate cmovs can be decomposed back to jumps, for some yet unknown definition of "appropriate".