1  /* PR middle-end/80809 */
       2  /* { dg-do run } */
       3  
       4  __attribute__((noinline, noclone)) void
       5  foo (int x)
       6  {
       7    int i, j, v[x], *w[16];
       8    for (i = 0; i < x; i++)
       9      v[i] = i;
      10  #pragma omp parallel
      11  #pragma omp single
      12    for (i = 0; i < 16; i++)
      13    /* Make sure v is implicitly determined shared in task, because it
      14       is shared on the parallel.  */
      15  #pragma omp task private (j)
      16      w[i] = v;
      17    for (i = 0; i < 16; i++)
      18      if (w[i] != v)
      19        __builtin_abort ();
      20  }
      21  
      22  int
      23  main ()
      24  {
      25    foo (4);
      26    foo (27);
      27    foo (196);
      28    return 0;
      29  }