1 // RUN: %libomptarget-compile-run-and-check-generic 2 3 #include <cstdio> 4 #include <cstdlib> 5 6 #define NUM 1024 7 8 class C { 9 public: 10 int *a; 11 }; 12 13 #pragma omp declare mapper(id : C s) map(s.a[0 : NUM]) 14 main()15int main() { 16 C c; 17 c.a = (int *)malloc(sizeof(int) * NUM); 18 for (int i = 0; i < NUM; i++) { 19 c.a[i] = 1; 20 } 21 #pragma omp target data map(mapper(id), tofrom : c) 22 { 23 #pragma omp target teams distribute parallel for 24 for (int i = 0; i < NUM; i++) { 25 ++c.a[i]; 26 } 27 } 28 int sum = 0; 29 for (int i = 0; i < NUM; i++) { 30 sum += c.a[i]; 31 } 32 // CHECK: Sum = 2048 33 printf("Sum = %d\n", sum); 34 return 0; 35 } 36