1 // RUN: %libomp-compile-and-run 2 #include <stdio.h> 3 #include "omp_testsuite.h" 4 test_omp_master_3()5int test_omp_master_3() 6 { 7 int nthreads; 8 int executing_thread; 9 int tid_result = 0; /* counts up the number of wrong thread no. for 10 the master thread. (Must be 0) */ 11 nthreads = 0; 12 executing_thread = -1; 13 14 #pragma omp parallel 15 { 16 #pragma omp master 17 { 18 int tid = omp_get_thread_num(); 19 if (tid != 0) { 20 #pragma omp critical 21 { tid_result++; } 22 } 23 #pragma omp critical 24 { 25 nthreads++; 26 } 27 executing_thread = omp_get_thread_num (); 28 } /* end of master*/ 29 } /* end of parallel*/ 30 return ((nthreads == 1) && (executing_thread == 0) && (tid_result == 0)); 31 } 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_master_3()) { 40 num_failed++; 41 } 42 } 43 return num_failed; 44 } 45