| // 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; |
| } |