/* { dg-do compile { target int128 } } */
/* { dg-options "-msse4 -O2 -fno-tree-loop-im -Wno-shift-count-overflow" } */

unsigned __int128 n;

int
foo (int x)
{
  __int128 a = 0;
  int b = !!(n * 2);

  while (x < 2)
    {
      if (a)
        {
          if (n)
            n ^= 1;
          else
            x <<= 32;
        }

      a = 1;
    }

  return b;
}
