// RUN: %libomptarget-compilexx-run-and-check-generic | |
// UNSUPPORTED: amdgcn-amd-amdhsa | |
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); | |
} |