]> git.ipfire.org Git - thirdparty/gcc.git/blob - libgomp/testsuite/libgomp.fortran/map-subarray-5.f90
59ad01ab76bef83ba0bfbabf5701d60ad1984d3d
[thirdparty/gcc.git] / libgomp / testsuite / libgomp.fortran / map-subarray-5.f90
1 ! { dg-do run }
2
3 type t
4 integer, pointer :: p(:)
5 end type t
6
7 type(t) :: var(3)
8 integer :: i, j
9
10 allocate (var(1)%p, source=[1,2,3,5])
11 allocate (var(2)%p, source=[2,3,5])
12 allocate (var(3)%p(1:3))
13
14 var(3)%p = 0
15
16 do i = 1, 3
17 do j = 1, 3
18 !$omp target map(var(i)%p, var(j)%p)
19 var(i)%p(1) = 5
20 var(j)%p(2) = 7
21 !$omp end target
22
23 if (i.ne.j) then
24 !$omp target map(var(i)%p(1:3), var(i)%p, var(j)%p)
25 var(i)%p(1) = var(i)%p(1) + 1
26 var(j)%p(2) = var(j)%p(2) + 1
27 !$omp end target
28
29 !$omp target map(var(i)%p, var(j)%p, var(j)%p(1:3))
30 var(i)%p(1) = var(i)%p(1) + 1
31 var(j)%p(2) = var(j)%p(2) + 1
32 !$omp end target
33
34 !$omp target map(var(i)%p, var(i)%p(1:3), var(j)%p, var(j)%p(2))
35 var(i)%p(1) = var(i)%p(1) + 1
36 var(j)%p(2) = var(j)%p(2) + 1
37 !$omp end target
38 end if
39
40 if (i.eq.j) then
41 if (var(i)%p(1).ne.5) stop 1
42 if (var(j)%p(2).ne.7) stop 2
43 else
44 if (var(i)%p(1).ne.8) stop 3
45 if (var(j)%p(2).ne.10) stop 4
46 end if
47 end do
48 end do
49
50 end
51
52 ! { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } }
53 ! { dg-output "libgomp: Mapped array elements must be the same .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } }
54 ! { dg-shouldfail "" { offload_device_nonshared_as } }