| // RUN: %libomptarget-compile-run-and-check-generic |
| |
| #include <cstdio> |
| #include <cstdlib> |
| |
| #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 teams distribute parallel for map(mapper(id), tofrom : c) |
| 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; |
| } |