pr39591-2.c 538 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* PR other/39591 */
  2. /* { dg-do run } */
  3. extern void abort (void);
  4. int e;
  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. #pragma omp parallel
  21. {
  22. int array[40];
  23. int i;
  24. for (i = 0; i < sizeof array / sizeof array[0]; i++)
  25. array[i] = 0x55555555;
  26. #pragma omp for schedule (dynamic)
  27. for (i = 0; i < 50; i++)
  28. foo (array);
  29. }
  30. if (e)
  31. abort ();
  32. return 0;
  33. }