| // { dg-do run } | |
| #include <cassert> | |
| template <typename T> | |
| 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; | |
| } |