// { dg-do run } #include template void adjust (T param) { #pragma omp declare mapper (T x) map(to:x.len, x.base) \ map(tofrom:x.base[0:x.len]) #pragma omp target for (int i = 0; i < param.len; i++) param.base[i]++; } struct S { int len; int *base; }; int main (int argc, char *argv[]) { S a; a.len = 100; a.base = new int[a.len]; for (int i = 0; i < a.len; i++) a.base[i] = 0; adjust (a); for (int i = 0; i < a.len; i++) assert (a.base[i] == 1); return 0; }