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 :).

Reply via email to