https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94617
--- Comment #5 from David Seifert <soap at gentoo dot org> --- (In reply to Richard Biener from comment #3) > Note the RTL if-conversion pass doesn't recognize what we present to it. > If you alter initial RTL expansion via -fno-tree-ter (not recommended in > general) > we produce a more 1:1 translation of the code as > > _Z16vanilla_bandpassiiiPKcS0_: > .LFB0: > .cfi_startproc > movl %esi, %r9d > cmpl %edx, %edi > setle %sil > cmpl %r9d, %edx > setl %al > testb %al, %sil > movq %rcx, %rax > cmovne %r8, %rax > ret > > which I wouldn't expect to execute faster though. just benchmarked the code on an oldish Ivybridge. GCC with vanilla_bandpass is 2.1x slower than GCC with funky_bandpass, and GCC with funky_bandpass is 12% slower than Clang with vanilla_bandpass.