// RUN: %libomptarget-compile-run-and-check-aarch64-unknown-linux-gnu // RUN: %libomptarget-compile-run-and-check-powerpc64-ibm-linux-gnu // RUN: %libomptarget-compile-run-and-check-powerpc64le-ibm-linux-gnu // RUN: %libomptarget-compile-run-and-check-x86_64-pc-linux-gnu // RUN: %libomptarget-compile-run-and-check-nvptx64-nvidia-cuda #include #include #define NUM 1024 class C { public: int *a; }; #pragma omp declare mapper(id: C s) map(s.a[0:NUM]) int main() { C c; c.a = (int*) malloc(sizeof(int)*NUM); for (int i = 0; i < NUM; i++) { c.a[i] = 1; } #pragma omp target data map(mapper(id),tofrom: c) { #pragma omp target teams distribute parallel for for (int i = 0; i < NUM; i++) { ++c.a[i]; } } int sum = 0; for (int i = 0; i < NUM; i++) { sum += c.a[i]; } // CHECK: Sum = 2048 printf("Sum = %d\n", sum); return 0; }