xref: /llvm-project/openmp/runtime/test/api/omp_in_parallel.c (revision 373107699709f6fb06992bf6b76274091570aaf2)
1 // RUN: %libomp-compile-and-run
2 #include <stdio.h>
3 #include "omp_testsuite.h"
4 
5 /*
6  * Checks that false is returned when called from serial region
7  * and true is returned when called within parallel region.
8  */
9 int test_omp_in_parallel()
10 {
11   int serial;
12   int isparallel;
13 
14   serial = 1;
15   isparallel = 0;
16   serial = omp_in_parallel();
17 
18   #pragma omp parallel
19   {
20     #pragma omp single
21     {
22       isparallel = omp_in_parallel();
23     }
24   }
25   return (!(serial) && isparallel);
26 }
27 
28 int main()
29 {
30   int i;
31   int num_failed=0;
32 
33   for(i = 0; i < REPETITIONS; i++) {
34     if(!test_omp_in_parallel()) {
35       num_failed++;
36     }
37   }
38   return num_failed;
39 }
40