1  /* PR middle-end/80809 */
       2  /* { dg-do run } */
       3  
       4  __attribute__((noinline, noclone)) void
       5  foo (int x)
       6  {
       7    int i, v[x], w[16];
       8    for (i = 0; i < x; i++)
       9      v[i] = i;
      10    for (i = 0; i < 16; i++)
      11      w[i] = 0;
      12  #pragma omp parallel
      13  #pragma omp single
      14    for (i = 0; i < 16; i++)
      15  #pragma omp task firstprivate (v)
      16      {
      17        int j;
      18        for (j = 0; j < x; j++)
      19  	v[j] += i;
      20        for (j = 0; j < x; j++)
      21  	w[i] += v[j];
      22      }
      23    for (i = 0; i < 16; i++)
      24      if (w[i] != (x - 1) * x / 2 + x * i)
      25        __builtin_abort ();
      26  }
      27  
      28  int
      29  main ()
      30  {
      31    foo (4);
      32    foo (27);
      33    foo (196);
      34    return 0;
      35  }