/* PR target/31507 */
/* { dg-do run } */
/* { dg-options "-Os -fno-omit-frame-pointer" } */
/* { dg-require-effective-target alloca } */

extern void abort (void);

__attribute__((noinline)) void
foo (double d0, double d1, double d2, double d3,
     double d4, double d5, double d6, double d7,
     float f0, float f1, float f2, float f3,
     char *p)
{
  if (d0 != 0 || d1 != 1 || d2 != 2 || d3 != 3)
    abort ();
  if (d4 != 4 || d5 != 5 || d6 != 6 || d7 != 7)
    abort ();
  if (f0 != 10 || f1 != 11 || f2 != 12 || f3 != 13)
    abort ();
  if (__builtin_memcmp (p, "foo", 4) != 0)
    abort ();
  __builtin_memcpy (p, "bar", 4);
}

__attribute__((noinline)) void
bar (int x)
{
  char p[x];
  if (x >= sizeof "foo")
    __builtin_memcpy (p, "foo", 4);
  foo (0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0,
       10.0f, 11.0f, 12.0f, 13.0f, p);
  if (x >= sizeof "bar" && __builtin_memcmp (p, "bar", 4) != 0)
    abort ();
}

int
main (void)
{
  bar (128);
  return 0;
}
