pr80809-1.c 521 B

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