https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114523
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ``` int foo2 () { int quux = bar (); unsigned long t3 = (unsigned int)quux; t3+=-1; t3 = t3>>63; unsigned char t = t3; unsigned long t4 = (unsigned int)baz; t4 = -t4; t4 = t4>>63; unsigned char t1 = t4; int t2 = t; t2 ^= t1; return t2; } ``` Produces the same trick for doing branchless compares. Hmm, clang produces a branch for the above code though :).