| extern "C" void abort (); | |
| int a, b, c, d, e; | |
| void | |
| foo (int &x, bool y) | |
| { | |
| #pragma omp task depend (out: x) | |
| a = 1; | |
| #pragma omp task depend (out: y ? b : c) | |
| (y ? b : c) = 2; | |
| #pragma omp task depend (inout: --d) | |
| d += 4; | |
| #pragma omp task depend (in : a, (y ? b : c), d) | |
| e = a + b * 10 + c * 100 + d * 1000; | |
| } | |
| int | |
| main () | |
| { | |
| #pragma omp parallel | |
| #pragma omp single | |
| foo (a, true); | |
| if (e != 1 + 20 + 0 + 3000) | |
| abort (); | |
| a = b = c = d = e = 0; | |
| #pragma omp parallel | |
| #pragma omp single | |
| foo (a, false); | |
| if (e != 1 + 0 + 200 + 3000) | |
| abort (); | |
| } |