1 // RUN: %libomptarget-compilexx-and-run-generic 2 3 #include <cassert> 4 #include <iostream> 5 #include <stdexcept> 6 main(int argc,char * argv[])7int main(int argc, char *argv[]) { 8 int a = 0; 9 std::cout << "outside a = " << a << " addr " << &a << std::endl; 10 #pragma omp target map(tofrom : a) depend(out : a) nowait 11 { 12 int sum = 0; 13 for (int i = 0; i < 100000; i++) 14 sum++; 15 a = 1; 16 } 17 18 #pragma omp task depend(inout : a) shared(a) 19 { 20 std::cout << "a = " << a << " addr " << &a << std::endl; 21 if (a != 1) 22 throw std::runtime_error("wrong result!"); 23 a = 2; 24 } 25 26 #pragma omp task depend(inout : a) shared(a) 27 { 28 std::cout << "a = " << a << " addr " << &a << std::endl; 29 if (a != 2) 30 throw std::runtime_error("wrong result!"); 31 a = 3; 32 } 33 34 #pragma omp taskwait 35 36 assert(a == 3 && "wrong result!"); 37 38 return 0; 39 } 40