xref: /llvm-project/openmp/runtime/test/api/omp_in_explicit_task.c (revision 1fbdb03b1d2cb2ec9a3c84445db57b570a6e5d9a)
1 // RUN: %libomp-compile-and-run
2 
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <omp.h>
6 
main()7 int main()
8 {
9   int res;
10   res = omp_in_explicit_task();
11   if (res) {
12     printf("error: omp_in_explicit_task: serial1 returned %d\n", res);
13     return 1;
14   }
15   #pragma omp parallel num_threads(2)
16   {
17     int r = omp_in_explicit_task();
18     if (r) {
19       printf("error: omp_in_explicit_task: par #%d returned %d\n",
20              omp_get_thread_num(), r);
21       exit(1);
22     }
23     #pragma omp task
24     {
25       int r = omp_in_explicit_task();
26       if (!r) {
27         printf("error: omp_in_explicit_task: task1 #%d returned %d\n",
28                omp_get_thread_num(), r);
29         exit(1);
30       }
31     }
32     #pragma omp task
33     {
34       int r = omp_in_explicit_task();
35       if (!r) {
36         printf("error: omp_in_explicit_task: task2 #%d returned %d\n",
37                omp_get_thread_num(), r);
38         exit(1);
39       }
40     }
41   }
42   res = omp_in_explicit_task();
43   if (res) {
44     printf("error: omp_in_explicit_task: serial2 returned %d\n", res);
45     return 1;
46   }
47   printf("passed\n");
48   return 0;
49 }
50