Fix build on sparc64-linux-gnu.
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / pr66199-1.f90
blobecf624583401ab99651dbb03b7294fad316a160d
1 ! PR middle-end/66199
2 ! { dg-do run }
3 ! { dg-options "-O2" }
5 integer :: u(1024), v(1024), w(1024), a, b, c, d, e, a1, b1, a2, b2, d1, d2
6 a = 1
7 b = 1024
8 d = 75
9 !$omp parallel do simd default(none) firstprivate (a, b) shared(u, v, w)
10 do d = a, b
11 u(d) = v(d) + w(d)
12 end do
13 if (d .ne. 1025) STOP 1
14 c = 17
15 d = 75
16 !$omp parallel do simd default(none) firstprivate (a, b) shared(u, v, w) &
17 !$omp& linear(d) linear(c:5) lastprivate(e)
18 do d = a, b
19 u(d) = v(d) + w(d)
20 c = c + 5
21 e = c
22 end do
23 if (d .ne. 1025 .or. c .ne. (17 + 5 * 1024)) STOP 2
24 if (e .ne. (17 + 5 * 1024)) STOP 3
25 a1 = 0
26 a2 = 0
27 b1 = 31
28 b2 = 31
29 d1 = 7
30 d2 = 9
31 !$omp parallel do simd default(none) firstprivate (a1, b1, a2, b2) &
32 !$omp& shared(u, v, w) lastprivate(d1, d2) collapse(2)
33 do d1 = a1, b1
34 do d2 = a2, b2
35 u(d1 * 32 + d2 + 1) = v(d1 * 32 + d2 + 1) + w(d1 * 32 + d2 + 1)
36 end do
37 end do
38 if (d1 .ne. 32 .or. d2 .ne. 32) STOP 4
39 d1 = 7
40 d2 = 9
41 !$omp parallel do simd default(none) firstprivate (a1, b1, a2, b2) &
42 !$omp& shared(u, v, w) collapse(2)
43 do d1 = a1, b1
44 do d2 = a2, b2
45 u(d1 * 32 + d2 + 1) = v(d1 * 32 + d2 + 1) + w(d1 * 32 + d2 + 1)
46 end do
47 end do
48 if (d1 .ne. 32 .or. d2 .ne. 32) STOP 5
49 end