https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122116
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- That is because gcc does not produce 2 cmov as you have If (a) B = Else C = That is unrelated to __builtin_expect_with_probability really.
