https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79390
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Try --param=max-rtl-if-conversion-insns=2 . Or try some -mtune that is not: /* X86_TUNE_ONE_IF_CONV_INSNS: Restrict a number of set insns to be if-converted to one. */ DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn", m_SILVERMONT | m_KNL | m_INTEL | m_CORE_ALL | m_GENERIC) See PR68920 for more details. cmov is a mixed bag, sometimes it helps (usually when the jump can't be predicted well), sometimes it slows things down tremendously.