| // RUN: %libomptarget-compilexx-run-and-check-generic | |
| // UNSUPPORTED: amdgcn-amd-amdhsa | |
| // XFAIL: intelgpu | |
| extern "C" int printf(const char *, ...); | |
| typedef struct { | |
| int a; | |
| } C; | |
| #pragma omp declare mapper(C s) map(to : s.a) | |
| typedef struct { | |
| int e; | |
| C f; | |
| int h; | |
| } D; | |
| int main() { | |
| D sa[10]; | |
| sa[1].e = 111; | |
| sa[1].f.a = 222; | |
| // CHECK: 111 222 | |
| printf("%d %d \n", sa[1].e, sa[1].f.a); | |
| #pragma omp target map(tofrom : sa[0 : 2]) | |
| { | |
| // CHECK: 111 | |
| printf("%d \n", sa[1].e); | |
| sa[0].e = 333; | |
| sa[1].f.a = 444; | |
| // CHECK: 333 444 | |
| printf("%d %d \n", sa[0].e, sa[1].f.a); | |
| } | |
| // CHECK: 333 222 | |
| printf("%d %d \n", sa[0].e, sa[1].f.a); | |
| } |