| #include <stdlib.h> | |
| #define N 10 | |
| struct S | |
| { | |
| int a, b; | |
| int *ptr; | |
| int c, d; | |
| }; | |
| int | |
| main (void) | |
| { | |
| struct S a; | |
| a.ptr = (int *) malloc (sizeof (int) * N); | |
| for (int i = 0; i < N; i++) | |
| a.ptr[i] = 0; | |
| #pragma omp target enter data map(to: a.ptr[:N]) | |
| #pragma omp target map(a, a.ptr[:0]) | |
| for (int i = 0; i < N; i++) | |
| a.ptr[i] += 1; | |
| #pragma omp target exit data map(from: a.ptr[:N]) | |
| for (int i = 0; i < N; i++) | |
| if (a.ptr[i] != 1) | |
| abort (); | |
| free (a.ptr); | |
| return 0; | |
| } |