124f836e8SJoachim Protze // RUN: %libomptarget-compile-generic
224f836e8SJoachim Protze // RUN: %libomptarget-run-generic 2>&1 \
324f836e8SJoachim Protze // RUN: | %fcheck-generic
4518a27e5SJoel E. Denny 
5518a27e5SJoel E. Denny 
6518a27e5SJoel E. Denny // END.
7518a27e5SJoel E. Denny 
8518a27e5SJoel E. Denny #include <omp.h>
9518a27e5SJoel E. Denny #include <stdio.h>
10518a27e5SJoel E. Denny 
main()11518a27e5SJoel E. Denny int main() {
12518a27e5SJoel E. Denny   int arr[100];
13518a27e5SJoel E. Denny 
14518a27e5SJoel E. Denny #pragma omp target data map(alloc: arr[50:2]) // partially mapped
15518a27e5SJoel E. Denny   {
16*8a880db5SYe Luo     // CHECK: arr[50] must present: 1
17*8a880db5SYe Luo     fprintf(stderr, "arr[50] must present: %d\n",
18*8a880db5SYe Luo             omp_target_is_present(&arr[50], omp_get_default_device()));
19*8a880db5SYe Luo 
20*8a880db5SYe Luo     // CHECK: arr[0] should not present: 0
21*8a880db5SYe Luo     fprintf(stderr, "arr[0] should not present: %d\n",
22*8a880db5SYe Luo             omp_target_is_present(&arr[0], omp_get_default_device()));
23*8a880db5SYe Luo 
24*8a880db5SYe Luo     // CHECK: arr[49] should not present: 0
25*8a880db5SYe Luo     fprintf(stderr, "arr[49] should not present: %d\n",
26*8a880db5SYe Luo             omp_target_is_present(&arr[49], omp_get_default_device()));
27*8a880db5SYe Luo 
28518a27e5SJoel E. Denny #pragma omp target // would implicitly map with full size but already present
29518a27e5SJoel E. Denny     {
30518a27e5SJoel E. Denny       arr[50] = 5;
31518a27e5SJoel E. Denny       arr[51] = 6;
32518a27e5SJoel E. Denny     } // must treat as present (dec ref count) even though full size not present
33518a27e5SJoel E. Denny   } // wouldn't delete if previous ref count dec didn't happen
34518a27e5SJoel E. Denny 
35*8a880db5SYe Luo   // CHECK: arr[50] still present: 0
36*8a880db5SYe Luo   fprintf(stderr, "arr[50] still present: %d\n",
37518a27e5SJoel E. Denny           omp_target_is_present(&arr[50], omp_get_default_device()));
38518a27e5SJoel E. Denny 
39518a27e5SJoel E. Denny   return 0;
40518a27e5SJoel E. Denny }
41