Fix gcc.c-torture/execute/ieee/cdivchkf.c on hpux
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / lastprivate2.f90
blobedaf82325a822554e7ef6f55e7e015db618bc82c
1 ! { dg-do run }
2 program lastprivate
3 integer :: i, k
4 common /c/ i, k
5 !$omp parallel num_threads (4)
6 call test1
7 !$omp end parallel
8 if (i .ne. 21 .or. k .ne. 20) stop 1
9 !$omp parallel num_threads (4)
10 call test2
11 !$omp end parallel
12 if (i .ne. 64 .or. k .ne. 61) stop 2
13 !$omp parallel num_threads (4)
14 call test3
15 !$omp end parallel
16 if (i .ne. 14 .or. k .ne. 11) stop 3
17 call test4
18 call test5
19 call test6
20 call test7
21 call test8
22 call test9
23 call test10
24 call test11
25 call test12
26 contains
27 subroutine test1
28 integer :: i, k
29 common /c/ i, k
30 !$omp do lastprivate (i, k)
31 do i = 1, 20
32 k = i
33 end do
34 end subroutine test1
35 subroutine test2
36 integer :: i, k
37 common /c/ i, k
38 !$omp do lastprivate (i, k)
39 do i = 7, 61, 3
40 k = i
41 end do
42 end subroutine test2
43 function ret3 ()
44 integer :: ret3
45 ret3 = 3
46 end function ret3
47 subroutine test3
48 integer :: i, k
49 common /c/ i, k
50 !$omp do lastprivate (i, k)
51 do i = -10, 11, ret3 ()
52 k = i
53 end do
54 end subroutine test3
55 subroutine test4
56 integer :: j, l
57 !$omp parallel do lastprivate (j, l) num_threads (4)
58 do j = 1, 20
59 l = j
60 end do
61 if (j .ne. 21 .or. l .ne. 20) stop 4
62 end subroutine test4
63 subroutine test5
64 integer :: j, l
65 l = 77
66 !$omp parallel do lastprivate (j, l) num_threads (4) firstprivate (l)
67 do j = 7, 61, 3
68 l = j
69 end do
70 if (j .ne. 64 .or. l .ne. 61) stop 5
71 end subroutine test5
72 subroutine test6
73 integer :: j, l
74 !$omp parallel do lastprivate (j, l) num_threads (4)
75 do j = -10, 11, ret3 ()
76 l = j
77 end do
78 if (j .ne. 14 .or. l .ne. 11) stop 6
79 end subroutine test6
80 subroutine test7
81 integer :: i, k
82 common /c/ i, k
83 !$omp parallel do lastprivate (i, k) num_threads (4)
84 do i = 1, 20
85 k = i
86 end do
87 if (i .ne. 21 .or. k .ne. 20) stop 7
88 end subroutine test7
89 subroutine test8
90 integer :: i, k
91 common /c/ i, k
92 !$omp parallel do lastprivate (i, k) num_threads (4)
93 do i = 7, 61, 3
94 k = i
95 end do
96 if (i .ne. 64 .or. k .ne. 61) stop 8
97 end subroutine test8
98 subroutine test9
99 integer :: i, k
100 common /c/ i, k
101 k = 77
102 !$omp parallel do lastprivate (i, k) num_threads (4) firstprivate (k)
103 do i = -10, 11, ret3 ()
104 k = i
105 end do
106 if (i .ne. 14 .or. k .ne. 11) stop 9
107 end subroutine test9
108 subroutine test10
109 integer :: i, k
110 common /c/ i, k
111 !$omp parallel num_threads (4)
112 !$omp do lastprivate (i, k)
113 do i = 1, 20
114 k = i
115 end do
116 !$omp end parallel
117 if (i .ne. 21 .or. k .ne. 20) stop 10
118 end subroutine test10
119 subroutine test11
120 integer :: i, k
121 common /c/ i, k
122 !$omp parallel num_threads (4)
123 !$omp do lastprivate (i, k)
124 do i = 7, 61, 3
125 k = i
126 end do
127 !$omp end parallel
128 if (i .ne. 64 .or. k .ne. 61) stop 11
129 end subroutine test11
130 subroutine test12
131 integer :: i, k
132 common /c/ i, k
133 k = 77
134 !$omp parallel num_threads (4)
135 !$omp do lastprivate (i, k) firstprivate (k)
136 do i = -10, 11, ret3 ()
137 k = i
138 end do
139 !$omp end parallel
140 if (i .ne. 14 .or. k .ne. 11) stop 12
141 end subroutine test12
142 end program lastprivate