https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98713
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> --- Please see PR 56309 (and PR 85559 meta bug). Quote from Honza: The decision on whether to use cmov or jmp was always tricky on x86 architectures. Cmov increase dependency chains, register pressure (both values needs to be loaded in) and has long opcode. So jump sequence, if well predicted, flows better through the out-of-order core. If badly predicted it is, of course, a disaster. I think more modern CPUs solved the problems with long latency of cmov, but the dependency chains are still there. We don't know how to drive the decision, as this is a deep architectural issue.