30 lines · cpp
1// clang-format off2// RUN: %libomptarget-compilexx-generic -Wno-openmp-mapping && %libomptarget-run-generic3 4#include <assert.h>5 6// clang-format on7 8struct Inner {9 int *data;10 Inner(int size) { data = new int[size](); }11 ~Inner() { delete[] data; }12};13#pragma omp declare mapper(Inner i) map(i, i.data[0 : 10])14 15struct Outer {16 Inner i;17 Outer() : i(10) {}18};19#pragma omp declare mapper(Outer o) map(o, o.i)20 21int main() {22 Outer o;23#pragma omp target map(tofrom : o)24 {25 o.i.data[0] = 42;26 }27 assert(o.i.data[0] == 42);28 return 0;29}30