https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107172
--- Comment #20 from Hongtao.liu <crazylht at gmail dot com> --- > generate: > testl %edi, %edi > movl $1, %edx > movl $-1, %eax > cmove %edx, %eax > > origin: > negl %edi > sbbl %eax, %eax > orl $1, %eax It now go through *if-conversion succeeded through noce_try_cmove_arith* instead of original *if-conversion succeeded through noce_try_cmove*.