| // RUN: %libomptarget-compile-generic | |
| // RUN: env LIBOMPTARGET_DEBUG=1 %libomptarget-run-generic 2>&1 \ | |
| // RUN: | %fcheck-generic -check-prefix=DEBUG -check-prefix=CHECK | |
| // REQUIRES: libomptarget-debug | |
| #include <stdio.h> | |
| struct S { | |
| int *p; | |
| }; | |
| int main(void) { | |
| int A[10]; | |
| struct S s1; | |
| s1.p = A; | |
| // DEBUG: Update pointer ([[DEV_PTR:0x[^ ]+]]) -> {{\[}}[[DEV_OBJ_A:0x[^ ]+]]{{\]}} | |
| #pragma omp target enter data map(alloc : s1.p[0 : 10]) | |
| // DEBUG-NOT: Update pointer ([[DEV_PTR]]) -> {{\[}}[[DEV_OBJ_A]]{{\]}} | |
| #pragma omp target map(alloc : s1.p[0 : 10]) | |
| { | |
| for (int i = 0; i < 10; ++i) | |
| s1.p[i] = i; | |
| } | |
| #pragma omp target exit data map(from : s1.p[0 : 10]) | |
| int fail_A = 0; | |
| for (int i = 0; i < 10; ++i) { | |
| if (A[i] != i) { | |
| fail_A = 1; | |
| break; | |
| } | |
| } | |
| // CHECK-NOT: Test A failed | |
| if (fail_A) { | |
| printf("Test A failed\n"); | |
| } | |
| return fail_A; | |
| } |