1  /* { dg-require-effective-target alloca } */
       2  void f(void * a, double y)
       3  {
       4  }
       5  
       6  double g (double a, double b, double c, double d)
       7  {
       8    double x, y, z;
       9    void *p;
      10  
      11    x = a + b;
      12    y = c * d;
      13  
      14    p = alloca (16);
      15  
      16    f(p, y);
      17    z = x * y * a;
      18  
      19    return z + b;
      20  }
      21  
      22  main ()
      23  {
      24    double a, b, c, d;
      25    a = 1.0;
      26    b = 0.0;
      27    c = 10.0;
      28    d = 0.0;
      29  
      30    if (g (a, b, c, d) != 0.0)
      31      abort ();
      32  
      33    if (a != 1.0 || b != 0.0 || c != 10.0 || d != 0.0)
      34      abort ();
      35  
      36    exit (0);
      37  }