// RUN: %libomp-compile-and-run #include #include "omp_testsuite.h" int my_iterations; #pragma omp threadprivate(my_iterations) int test_omp_single_nowait() { int nr_iterations; int total_iterations = 0; int i; nr_iterations = 0; my_iterations = 0; #pragma omp parallel private(i) { for (i = 0; i < LOOPCOUNT; i++) { #pragma omp single nowait { #pragma omp atomic nr_iterations++; } } } #pragma omp parallel private(i) { my_iterations = 0; for (i = 0; i < LOOPCOUNT; i++) { #pragma omp single nowait { my_iterations++; } } #pragma omp critical { total_iterations += my_iterations; } } return ((nr_iterations == LOOPCOUNT) && (total_iterations == LOOPCOUNT)); } /* end of check_single_nowait*/ int main() { int i; int num_failed=0; for(i = 0; i < REPETITIONS; i++) { if(!test_omp_single_nowait()) { num_failed++; } } return num_failed; }