/* { dg-do run } */

struct X { int counter; };

struct X __attribute__((noipa)) foo (struct X x)
{
  x.counter++;
  if (x.counter == 5)
    __builtin_exit (0);
  return x;
}

int
main ()
{
  struct X x;
  x.counter = 0;
  for (int i = 0; i < 10; ++i)
    x = foo (x);
  __builtin_abort ();
}