1*ee1c04a9SPeyton, Jonathan L // RUN: %libomp-compile-and-run
2*ee1c04a9SPeyton, Jonathan L
3*ee1c04a9SPeyton, Jonathan L #include <stdio.h>
4*ee1c04a9SPeyton, Jonathan L #include <stdlib.h>
5*ee1c04a9SPeyton, Jonathan L #include <omp.h>
6*ee1c04a9SPeyton, Jonathan L #include "omp_my_sleep.h"
7*ee1c04a9SPeyton, Jonathan L
8*ee1c04a9SPeyton, Jonathan L int a = 0;
9*ee1c04a9SPeyton, Jonathan L
task1()10*ee1c04a9SPeyton, Jonathan L void task1() {
11*ee1c04a9SPeyton, Jonathan L my_sleep(0.5);
12*ee1c04a9SPeyton, Jonathan L a = 10;
13*ee1c04a9SPeyton, Jonathan L }
14*ee1c04a9SPeyton, Jonathan L
task2()15*ee1c04a9SPeyton, Jonathan L void task2() {
16*ee1c04a9SPeyton, Jonathan L a++;
17*ee1c04a9SPeyton, Jonathan L }
18*ee1c04a9SPeyton, Jonathan L
main(int argc,char ** argv)19*ee1c04a9SPeyton, Jonathan L int main(int argc, char** argv)
20*ee1c04a9SPeyton, Jonathan L {
21*ee1c04a9SPeyton, Jonathan L #pragma omp parallel shared(argc) num_threads(2)
22*ee1c04a9SPeyton, Jonathan L {
23*ee1c04a9SPeyton, Jonathan L #pragma omp single
24*ee1c04a9SPeyton, Jonathan L {
25*ee1c04a9SPeyton, Jonathan L #pragma omp task depend(out: a)
26*ee1c04a9SPeyton, Jonathan L task1();
27*ee1c04a9SPeyton, Jonathan L
28*ee1c04a9SPeyton, Jonathan L #pragma omp task if(0) depend(inout: a)
29*ee1c04a9SPeyton, Jonathan L task2();
30*ee1c04a9SPeyton, Jonathan L }
31*ee1c04a9SPeyton, Jonathan L }
32*ee1c04a9SPeyton, Jonathan L if (a != 11) {
33*ee1c04a9SPeyton, Jonathan L fprintf(stderr, "fail: expected 11, but a is %d\n", a);
34*ee1c04a9SPeyton, Jonathan L exit(1);
35*ee1c04a9SPeyton, Jonathan L } else {
36*ee1c04a9SPeyton, Jonathan L printf("pass\n");
37*ee1c04a9SPeyton, Jonathan L }
38*ee1c04a9SPeyton, Jonathan L return 0;
39*ee1c04a9SPeyton, Jonathan L }
40