1 // RUN: %libomptarget-compile-generic 2 // RUN: %libomptarget-run-fail-generic 2>&1 \ 3 // RUN: | %fcheck-generic 4 5 #include <stdio.h> 6 main()7int main() { 8 int arr[5]; 9 10 // CHECK: addr=0x[[#%x,HOST_ADDR:]] 11 fprintf(stderr, "addr=%p\n", arr); 12 13 // CHECK-NOT: omptarget 14 #pragma omp target enter data map(alloc : arr[0 : 5]) 15 #pragma omp target exit data map(present, release : arr[0 : 0]) 16 17 // CHECK: arr is present 18 fprintf(stderr, "arr is present\n"); 19 20 // arr[0:0] doesn't create an actual mapping in the first directive. 21 // 22 // CHECK: omptarget message: device mapping required by 'present' map type modifier does not exist for host address 0x{{0*}}[[#HOST_ADDR]] (0 bytes) 23 // CHECK: omptarget fatal error 1: failure of target construct while offloading is mandatory 24 #pragma omp target enter data map(alloc : arr[0 : 0]) 25 #pragma omp target exit data map(present, release : arr[0 : 0]) 26 27 // CHECK-NOT: arr is present 28 fprintf(stderr, "arr is present\n"); 29 30 return 0; 31 } 32