https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94892
--- Comment #4 from Gabriel Ravier <gabravier at gmail dot com> --- Harald, for the specific code you wrote, I now see this from GCC : f(int): test edi, edi js .L2 jmp f1() .L2: jmp f2() So for that specific code, GCC has improved, though for the original test case it has not. I must note, though, that this still means that either : - GCC fails to properly optimize `(x >> 31) + 1` - GCC fails to properly optimize my original test case