/* PR target/93376 */
/* { dg-do compile { target int128 } } */
/* { dg-options "-Og -finline-functions-called-once" } */

unsigned a, b, c;

int
bar (int x)
{
  short s = __builtin_sub_overflow (~x, 0, &b);
  a = __builtin_ffsll (~x);
  return __builtin_add_overflow_p (-(unsigned __int128) a, s,
				   (unsigned __int128) 0);
}

void
foo (void)
{
  c = bar (0);
}