]>
Commit | Line | Data |
---|---|---|
f5745dc1 JB |
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 | ||
bc7546e3 TS |
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 } } | |
f5745dc1 | 54 | ! { dg-shouldfail "" { offload_device_nonshared_as } } |