1 // RUN: %libomptarget-compile-generic 2 // RUN: %libomptarget-run-generic 2>&1 \ 3 // RUN: | %fcheck-generic 4 5 6 // END. 7 8 #include <omp.h> 9 #include <stdio.h> 10 11 int main() { 12 int arr[100]; 13 14 #pragma omp target data map(alloc: arr[50:2]) // partially mapped 15 { 16 // CHECK: arr[50] must present: 1 17 fprintf(stderr, "arr[50] must present: %d\n", 18 omp_target_is_present(&arr[50], omp_get_default_device())); 19 20 // CHECK: arr[0] should not present: 0 21 fprintf(stderr, "arr[0] should not present: %d\n", 22 omp_target_is_present(&arr[0], omp_get_default_device())); 23 24 // CHECK: arr[49] should not present: 0 25 fprintf(stderr, "arr[49] should not present: %d\n", 26 omp_target_is_present(&arr[49], omp_get_default_device())); 27 28 #pragma omp target // would implicitly map with full size but already present 29 { 30 arr[50] = 5; 31 arr[51] = 6; 32 } // must treat as present (dec ref count) even though full size not present 33 } // wouldn't delete if previous ref count dec didn't happen 34 35 // CHECK: arr[50] still present: 0 36 fprintf(stderr, "arr[50] still present: %d\n", 37 omp_target_is_present(&arr[50], omp_get_default_device())); 38 39 return 0; 40 } 41