annotate libgomp/testsuite/libgomp.fortran/pr66199-6.f90 @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 ! { dg-do run }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 !
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 ! PR fortran/94690
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 ! PR middle-end/66199
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 module m
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 implicit none
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 integer :: u(0:1023), v(0:1023), w(0:1023)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 !$omp declare target (u, v, w)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 contains
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 integer function f2 (a, b, c)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 integer :: a, b, c, d, e
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 !$omp target map(from: d, e)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 !$omp teams distribute parallel do default(none) firstprivate (a, b, c) shared(u, v, w) lastprivate(d, e)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 do d = a, b-1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 u(d) = v(d) + w(d)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 e = c + d * 5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 end do
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 !$omp end target
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 f2 = d + e
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 end
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 integer function f3 (a1, b1, a2, b2)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 integer :: a1, b1, a2, b2, d1, d2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 !$omp target map(from: d1, d2)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 !$omp teams distribute parallel do default(none) firstprivate (a1, b1, a2, b2) shared(u, v, w) lastprivate(d1, d2) collapse(2)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 do d1 = a1, b1-1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 do d2 = a2, b2-1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 u(d1 * 32 + d2) = v(d1 * 32 + d2) + w(d1 * 32 + d2)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 end do
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 end do
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 !$omp end target
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 f3 = d1 + d2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 end
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 end module m
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 use m
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 if (f2 (0, 1024, 17) /= 1024 + (17 + 5 * 1023)) stop 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 if (f3 (0, 32, 0, 32) /= 64) stop 2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 end