summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/gomp/pr78260-2.f90
blob: f5d888592b95f35a7f04cbe03d5b4e3ee5245a50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
! { dg-do compile }
! { dg-options "-fopenmp -fdump-tree-original" }

! PR fortran/78260

module m
  implicit none
  integer :: n = 0
contains
  integer function f1()
    !$omp target data map(f1)
    !$omp target update to(f1)
    f1 = 5 
    !$omp end target data
  end function f1

  integer function f2()
    dimension :: f2(1)
    !$omp target data map(f2)
    !$omp target update to(f2)
    f2(1) = 5 
    !$omp end target data
  end function f2

  integer function f3() result(res)
    dimension :: res(1)
    !$omp target data map(res)
    !$omp target update to(res)
    res(1) = 5 
    !$omp end target data
  end function f3

  integer function f4() result(res)
    allocatable :: res
    dimension :: res(:)
    !$omp target data map(res)
    !$omp target update to(res)
    res = [5]
    !$omp end target data
  end function f4

  subroutine sub()
    integer, allocatable :: arr(:)
    !$omp target data map(arr)
    !$omp target update to(arr)
    arr = [5]
    !$omp end target data
  end subroutine sub
end module m

! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[len: D.\[0-9\]+ \\* 4\\\]\\) map\\(to:arr \\\[pointer set, len: ..\\\]\\) map\\(alloc:\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[pointer assign, bias: 0\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[len: D.\[0-9\]+ \\* 4\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[len: D.\[0-9\]+ \\* 4\\\]\\) map\\(to:\\*__result \\\[pointer set, len: ..\\\]\\) map\\(alloc:\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[pointer assign, bias: 0\\\]\\) map\\(alloc:__result \\\[pointer assign, bias: 0\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[len: D.\[0-9\]+ \\* 4\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*__result.0\\) map\\(alloc:__result.0 \\\[pointer assign, bias: 0\\\]\\)" 2 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*__result.0\\)" 2 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:__result_f1\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(__result_f1\\)" 1 "original" } }