/* { dg-do run } */
/* { dg-require-effective-target alloca } */

int __attribute__((noipa))
g (char *p)
{
  return p[9];
}
int main (int argc, char **argv)
{
  struct S {
    char toto[argc + 16];
  };
  int f (struct S arg) {
      __builtin_strcpy(arg.toto, "helloworld");
      return g (arg.toto);
  }
  struct S bob;
  __builtin_strcpy(bob.toto, "coucoucoucou");
  if (f(bob) != 'd' || __builtin_strcmp (bob.toto, "coucoucoucou"))
    __builtin_abort ();
  return 0;
}
