https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109483
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Richard Biener from comment #2) > Note that clang seems to propagate the constant equivalence which we > instead un-propagate. With -fdisable-tree-uncprop1 you'll get the > expected code: > > foo: > .LFB0: > .cfi_startproc > cmpl $-1, %edi > je .L8 > .L2: > movl $1, %eax > ret > .p2align 4,,10 > .p2align 3 > .L8: > xorl %eax, %eax > #APP > # 6 "t.c" 1 > int3 > # 0 "" 2 > #NO_APP > je .L2 > ret Even the above is not optimal. I'd expect: ... .L8: #APP # 6 "t.c" 1 int3 # 0 "" 2 #NO_APP je .L2 xorl %eax, %eax ret