xref: /llvm-project/openmp/runtime/test/tasking/omp_task_if.c (revision 373107699709f6fb06992bf6b76274091570aaf2)
1*614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2*614c7ef8SJonathan Peyton #include <stdio.h>
3*614c7ef8SJonathan Peyton #include <math.h>
4*614c7ef8SJonathan Peyton #include "omp_testsuite.h"
5*614c7ef8SJonathan Peyton #include "omp_my_sleep.h"
6*614c7ef8SJonathan Peyton 
test_omp_task_if()7*614c7ef8SJonathan Peyton int test_omp_task_if()
8*614c7ef8SJonathan Peyton {
9*614c7ef8SJonathan Peyton   int condition_false;
10*614c7ef8SJonathan Peyton   int count;
11*614c7ef8SJonathan Peyton   int result;
12*614c7ef8SJonathan Peyton 
13*614c7ef8SJonathan Peyton   count=0;
14*614c7ef8SJonathan Peyton   condition_false = (count == 1);
15*614c7ef8SJonathan Peyton   #pragma omp parallel
16*614c7ef8SJonathan Peyton   {
17*614c7ef8SJonathan Peyton     #pragma omp single
18*614c7ef8SJonathan Peyton     {
19*614c7ef8SJonathan Peyton       #pragma omp task if (condition_false) shared(count, result)
20*614c7ef8SJonathan Peyton       {
21*614c7ef8SJonathan Peyton         my_sleep (SLEEPTIME);
22*614c7ef8SJonathan Peyton         #pragma omp critical
23*614c7ef8SJonathan Peyton         result = (0 == count);
24*614c7ef8SJonathan Peyton       } /* end of omp task */
25*614c7ef8SJonathan Peyton       #pragma omp critical
26*614c7ef8SJonathan Peyton       count = 1;
27*614c7ef8SJonathan Peyton     } /* end of single */
28*614c7ef8SJonathan Peyton   } /*end of parallel */
29*614c7ef8SJonathan Peyton   return result;
30*614c7ef8SJonathan Peyton }
31*614c7ef8SJonathan Peyton 
main()32*614c7ef8SJonathan Peyton int main()
33*614c7ef8SJonathan Peyton {
34*614c7ef8SJonathan Peyton   int i;
35*614c7ef8SJonathan Peyton   int num_failed=0;
36*614c7ef8SJonathan Peyton 
37*614c7ef8SJonathan Peyton   for(i = 0; i < REPETITIONS; i++) {
38*614c7ef8SJonathan Peyton     if(!test_omp_task_if()) {
39*614c7ef8SJonathan Peyton       num_failed++;
40*614c7ef8SJonathan Peyton     }
41*614c7ef8SJonathan Peyton   }
42*614c7ef8SJonathan Peyton   return num_failed;
43*614c7ef8SJonathan Peyton }
44