1 // RUN: %libomp-compile-and-run 2 #include <stdio.h> 3 #include <omp.h> main()4int main() 5 { 6 enum {ITERS = 500}; 7 enum {SIZE = 5}; 8 int err = 0; 9 #pragma omp parallel num_threads(2) reduction(+:err) 10 { 11 int r = 0; 12 int i; 13 #pragma omp taskloop grainsize(SIZE) shared(r) nogroup 14 for(i=0; i<ITERS; i++) { 15 #pragma omp atomic 16 ++r; 17 } 18 #pragma omp taskwait 19 printf("%d\n", r); 20 if (r != ITERS) 21 err++; 22 } // end of parallel 23 if (err != 0) { 24 printf("failed, err = %d\n", err); 25 return 1; 26 } else { 27 printf("passed\n"); 28 return 0; 29 } 30 } 31