| // RUN: %libomp-compile-and-run | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <omp.h> | |
| #include "omp_my_sleep.h" | |
| int a = 0; | |
| void task1() { | |
| my_sleep(0.5); | |
| a = 10; | |
| } | |
| void task2() { | |
| a++; | |
| } | |
| int main(int argc, char** argv) | |
| { | |
| #pragma omp parallel shared(argc) num_threads(2) | |
| { | |
| #pragma omp single | |
| { | |
| #pragma omp task depend(out: a) | |
| task1(); | |
| #pragma omp task if(0) depend(inout: a) | |
| task2(); | |
| } | |
| } | |
| if (a != 11) { | |
| fprintf(stderr, "fail: expected 11, but a is %d\n", a); | |
| exit(1); | |
| } else { | |
| printf("pass\n"); | |
| } | |
| return 0; | |
| } |