// { dg-do run } #include struct S { int *myarr; int len; }; class C { S smemb; #pragma omp declare mapper (custom:S s) map(to:s.myarr) \ map(tofrom:s.myarr[0:s.len]) public: C(int l) { smemb.myarr = new int[l]; smemb.len = l; for (int i = 0; i < l; i++) smemb.myarr[i] = 0; } void bump(); void check(); }; void C::bump () { #pragma omp target map(mapper(custom), tofrom: smemb) { for (int i = 0; i < smemb.len; i++) smemb.myarr[i]++; } } void C::check () { for (int i = 0; i < smemb.len; i++) assert (smemb.myarr[i] == 1); } int main (int argc, char *argv[]) { C test (100); test.bump (); test.check (); return 0; }