tree-optimization/113385 - wrong loop father with early exit vectorization
[official-gcc.git] / gcc / testsuite / gfortran.dg / gomp / map-subarray.f90
blob197888a43365a9918e20bfa08b53c4e5e871f9b9
1 ! { dg-do compile }
2 ! { dg-additional-options "-fdump-tree-gimple" }
4 type T
5 integer, pointer :: arr1(:)
6 integer, pointer :: arr2(:)
7 end type T
9 type(T) :: tv
10 integer, allocatable, target, dimension(:) :: arr
12 allocate(arr(1:20))
14 tv%arr1 => arr
15 tv%arr2 => arr
17 !$omp target map(tv%arr1)
18 tv%arr1(1) = tv%arr1(1) + 1
19 !$omp end target
21 ! { dg-final { scan-tree-dump {(?n)#pragma omp target.* map\(struct:tv \[len: 1\]\) map\(to:tv\.arr1 \[pointer set, len: [0-9]+\]\) map\(tofrom:MEM <integer\(kind=4\)\[0:\]> \[\(integer\(kind=4\)\[0:\] \*\)_[0-9]+\] \[len: _[0-9]+\]\[implicit\]\) map\(attach:tv\.arr1\.data \[bias: 0\]\)} "gimple" } }
23 !$omp target map(tv%arr2) map(tv%arr2(1:10))
24 tv%arr2(1) = tv%arr2(1) + 1
25 !$omp end target
27 !$omp target map(tv%arr2(1:10))
28 tv%arr2(1) = tv%arr2(1) + 1
29 !$omp end target
31 ! { dg-final { scan-tree-dump-times {(?n)#pragma omp target.* map\(struct:tv \[len: 1\]\) map\(to:tv\.arr2 \[pointer set, len: [0-9]+\]\) map\(tofrom:MEM <integer\(kind=4\)\[0:\]> \[\(integer\(kind=4\)\[0:\] \*\)_[0-9]+\] \[len: _[0-9]+\]\) map\(attach:tv\.arr2\.data \[bias: [^\]]+\]\)} 2 "gimple" } }
33 !$omp target map(tv, tv%arr2(1:10))
34 tv%arr2(1) = tv%arr2(1) + 1
35 !$omp end target
37 ! { dg-final { scan-tree-dump {(?n)#pragma omp target.* map\(tofrom:tv \[len: [0-9]+\]\) map\(tofrom:MEM <integer\(kind=4\)\[0:\]> \[\(integer\(kind=4\)\[0:\] \*\)_[0-9]+\] \[len: _[0-9]+\]\) map\(attach:tv\.arr2\.data \[bias: [^\]]+\]\)} "gimple" } }
39 end