pr39591-3.c 516 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /* PR other/39591 */
  2. /* { dg-do run } */
  3. extern void abort (void);
  4. int e, a[40];
  5. void __attribute__((noinline))
  6. foo (int *array)
  7. {
  8. #pragma omp task
  9. {
  10. int j;
  11. for (j = 0; j < 40; j++)
  12. if (array[j] != 0x55555555)
  13. #pragma omp atomic
  14. e++;
  15. }
  16. }
  17. int
  18. main (void)
  19. {
  20. int k;
  21. for (k = 0; k < sizeof a / sizeof a[0]; k++)
  22. a[k] = 0x55555555;
  23. #pragma omp parallel
  24. {
  25. int i;
  26. #pragma omp for schedule (dynamic)
  27. for (i = 0; i < 50; i++)
  28. foo (a);
  29. }
  30. if (e)
  31. abort ();
  32. return 0;
  33. }