// RUN: %libomp-compile-and-run
#include <stdio.h>
#include <omp.h>
int main()
{
enum {ITERS = 500};
enum {SIZE = 5};
int err = 0;
#pragma omp parallel num_threads(2) reduction(+:err)
{
int r = 0;
int i;
#pragma omp taskloop grainsize(SIZE) shared(r) nogroup
for(i=0; i<ITERS; i++) {
#pragma omp atomic
++r;
}
#pragma omp taskwait
printf("%d\n", r);
if (r != ITERS)
err++;
} // end of parallel
if (err != 0) {
printf("failed, err = %d\n", err);
return 1;
} else {
printf("passed\n");
return 0;
}
}