1 // RUN: %libomp-compile-and-run 2 #include <stdio.h> 3 #include "omp_testsuite.h" 4 test_omp_single()5int test_omp_single() 6 { 7 int nr_threads_in_single; 8 int result; 9 int nr_iterations; 10 int i; 11 12 nr_threads_in_single = 0; 13 result = 0; 14 nr_iterations = 0; 15 16 #pragma omp parallel private(i) 17 { 18 for (i = 0; i < LOOPCOUNT; i++) { 19 #pragma omp single 20 { 21 #pragma omp flush 22 nr_threads_in_single++; 23 #pragma omp flush 24 nr_iterations++; 25 nr_threads_in_single--; 26 result = result + nr_threads_in_single; 27 } 28 } 29 } 30 return ((result == 0) && (nr_iterations == LOOPCOUNT)); 31 } /* end of check_single*/ 32 main()33int main() 34 { 35 int i; 36 int num_failed=0; 37 38 for(i = 0; i < REPETITIONS; i++) { 39 if(!test_omp_single()) { 40 num_failed++; 41 } 42 } 43 return num_failed; 44 } 45