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 enter data map(mapper(id),to: c) 22 #pragma omp target teams distribute parallel for 23 for (int i = 0; i < NUM; i++) { 24 ++c.a[i]; 25 } 26 #pragma omp target exit data map(mapper(id),from: c) 27 int sum = 0; 28 for (int i = 0; i < NUM; i++) { 29 sum += c.a[i]; 30 } 31 // CHECK: Sum = 2048 32 printf("Sum = %d\n", sum); 33 return 0; 34 } 35 36