/* { dg-do run } */ #include struct T { int a; int b; int c; }; void foo (void) { struct T x; x.a = x.b = x.c = 0; #pragma omp target { x.a++; x.c++; } assert (x.a == 1); assert (x.b == 0); assert (x.c == 1); } // An identity mapper. This should do the same thing as the default! #pragma omp declare mapper (struct T v) map(v) void bar (void) { struct T x; x.a = x.b = x.c = 0; #pragma omp target { x.b++; } #pragma omp target map(x) { x.a++; } assert (x.a == 1); assert (x.b == 1); assert (x.c == 0); } int main (int argc, char *argv[]) { foo (); bar (); return 0; }