https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114523

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
here is one which makes similar code for both gcc and clang:
```

int foo2 ()
{
  int quux = bar ();
  unsigned long t3 = (unsigned int)quux;
  t3+=-1;
  asm("":"+r"(t3));
  t3 = t3>>63;
  unsigned char t = t3;
  unsigned long t4 = (unsigned int)baz;
  t4 = -t4;
  asm("":"+r"(t4));
  t4 = t4>>63;
  asm("":"+r"(t4));
  unsigned char t1 = t4;
  int t2 = t;
  t2 ^= t1;
  return t2;
}

```

though gcc produces mov32 and not <<32/>>32.

Reply via email to