OpenMP/Fortran: Fixes for {use,is}_device_ptr
[gcc.git] / gcc / testsuite / gfortran.dg / gomp / map-3.f90
1 ! { dg-additional-options "-fdump-tree-original" }
2
3 subroutine bar
4 integer, target :: x, x2
5 integer, allocatable, target :: y(:,:), z(:,:)
6 x = 7
7 !$omp target enter data map(to:x, x2)
8
9 x = 8
10 !$omp target data map(always, to: x)
11 call foo(x)
12 !$omp end target data
13
14 !$omp target data use_device_ptr(x)
15 call foo2(x)
16 !$omp end target data
17
18 !$omp target data use_device_addr(x2)
19 call foo2(x)
20 !$omp end target data
21 !$omp target exit data map(release:x)
22
23 !$omp target data map(y) use_device_addr(y)
24 call foo3(y)
25 !$omp end target data
26
27 !$omp target data map(z) use_device_ptr(z)
28 call foo3(z)
29 !$omp end target data
30 end
31
32 ! { dg-final { scan-tree-dump-times "#pragma omp target enter data map\\(to:x\\)" 1 "original" } }
33 ! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(always,to:x\\)" 1 "original" } }
34 ! { dg-final { scan-tree-dump-times "#pragma omp target data use_device_addr\\(x\\)" 1 "original" } }
35 ! { dg-final { scan-tree-dump-times "#pragma omp target data use_device_addr\\(x2\\)" 1 "original" } }
36 ! { dg-final { scan-tree-dump-times "#pragma omp target exit data map\\(release:x\\)" 1 "original" } }
37 ! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(c_char \\*\\) y.data \\\[len: .*\\) map\\(to:y \\\[pointer set, len: .*\\) map\\(alloc:.*y.data \\\[pointer assign, bias: 0\\\]\\) use_device_addr\\(y\\)" 1 "original" } }
38 ! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(c_char \\*\\) z.data \\\[len: .*\\) map\\(to:z \\\[pointer set, len: .*\\) map\\(alloc:.*z.data \\\[pointer assign, bias: 0\\\]\\) use_device_addr\\(z\\)" 1 "original" } }