PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / alloc-comp-2.f90
blob7d035387a3efaf13e60bd5f7e631b2d37daa1e62
1 ! { dg-do run }
2 ! Don't cycle by default through all options, just test -O0 and -O2,
3 ! as this is quite large test.
4 ! { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } }
6 module m
7 type dl
8 integer :: a, b
9 integer, allocatable :: c(:,:)
10 integer :: d, e
11 integer, allocatable :: f
12 end type
13 type dt
14 integer :: g
15 type (dl), allocatable :: h(:)
16 integer :: i
17 type (dl) :: j(2, 2)
18 type (dl), allocatable :: k
19 end type
20 contains
21 subroutine ver_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
22 type (dl), intent (in) :: obj
23 integer, intent (in) :: val, cl1, cu1, cl2, cu2
24 logical, intent (in) :: c, f
25 if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) STOP 1
26 if (c) then
27 if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) STOP 2
28 if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) STOP 3
29 end if
30 if (val /= 0) then
31 if (obj%a /= val .or. obj%b /= val) STOP 4
32 if (obj%d /= val .or. obj%e /= val) STOP 5
33 if (c) then
34 if (any (obj%c /= val)) STOP 6
35 end if
36 if (f) then
37 if (obj%f /= val) STOP 7
38 end if
39 end if
40 end subroutine ver_dl
41 subroutine ver_dt (obj, val, h, hl, hu, k, c, cl1, cu1, cl2, cu2, f)
42 type (dt), intent (in) :: obj
43 integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
44 logical, intent (in) :: h, k, c, f
45 integer :: i, j
46 if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) STOP 8
47 if (h) then
48 if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) STOP 9
49 do i = hl, hu
50 call ver_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
51 end do
52 end if
53 do i = 1, 2
54 do j = 1, 2
55 call ver_dl (obj%j(i, j), val, c, cl1, cu1, cl2, cu2, f)
56 end do
57 end do
58 if (k) call ver_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
59 if (val /= 0) then
60 if (obj%g /= val .or. obj%i /= val) STOP 10
61 end if
62 end subroutine ver_dt
63 subroutine alloc_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
64 type (dl), intent (inout) :: obj
65 integer, intent (in) :: val, cl1, cu1, cl2, cu2
66 logical, intent (in) :: c, f
67 if (val /= 0) then
68 obj%a = val
69 obj%b = val
70 obj%d = val
71 obj%e = val
72 end if
73 if (allocated (obj%c)) deallocate (obj%c)
74 if (c) then
75 allocate (obj%c(cl1:cu1, cl2:cu2))
76 if (val /= 0) obj%c = val
77 end if
78 if (f) then
79 if (.not.allocated (obj%f)) allocate (obj%f)
80 if (val /= 0) obj%f = val
81 else
82 if (allocated (obj%f)) deallocate (obj%f)
83 end if
84 end subroutine alloc_dl
85 subroutine alloc_dt (obj, val, h, hl, hu, k, c, cl1, cu1, cl2, cu2, f)
86 type (dt), intent (inout) :: obj
87 integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
88 logical, intent (in) :: h, k, c, f
89 integer :: i, j
90 if (val /= 0) then
91 obj%g = val
92 obj%i = val
93 end if
94 if (allocated (obj%h)) deallocate (obj%h)
95 if (h) then
96 allocate (obj%h(hl:hu))
97 do i = hl, hu
98 call alloc_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
99 end do
100 end if
101 do i = 1, 2
102 do j = 1, 2
103 call alloc_dl (obj%j(i, j), val, c, cl1, cu1, cl2, cu2, f)
104 end do
105 end do
106 if (k) then
107 if (.not.allocated (obj%k)) allocate (obj%k)
108 call alloc_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
109 else
110 if (allocated (obj%k)) deallocate (obj%k)
111 end if
112 end subroutine alloc_dt
113 end module m
114 use m
115 type (dt), allocatable :: y
116 call foo (y)
117 contains
118 subroutine foo (y)
119 use m
120 type (dt), allocatable :: x, y, z(:,:)
121 logical, parameter :: F = .false.
122 logical, parameter :: T = .true.
123 logical :: l
124 !$omp parallel private (x, y, z)
125 if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 11
126 !$omp end parallel
127 !$omp parallel firstprivate (x, y, z)
128 if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 12
129 !$omp end parallel
130 l = F
131 !$omp parallel sections lastprivate (x, y, z) firstprivate (l)
132 !$omp section
133 if (.not. l) then
134 if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 13
135 end if
136 !$omp section
137 if (.not. l) then
138 if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 14
139 end if
140 allocate (x, y, z(-3:-3,2:3))
141 call alloc_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
142 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
143 call alloc_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
144 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
145 call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
146 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
147 call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
148 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
149 !$omp section
150 !$omp end parallel sections
151 if (.not.allocated (x) .or. .not.allocated (y)) STOP 15
152 if (.not.allocated (z)) STOP 16
153 if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) STOP 17
154 if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) STOP 18
155 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
156 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
157 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
158 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
159 call alloc_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
160 call ver_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
161 call alloc_dt (y, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
162 call ver_dt (y, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
163 call alloc_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
164 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
165 call alloc_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
166 call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
167 !$omp parallel private (x, y, z)
168 call ver_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
169 call alloc_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
170 call ver_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
171 call ver_dt (y, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
172 call alloc_dt (y, 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
173 call ver_dt (y, 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
174 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
175 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
176 call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
177 call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
178 call alloc_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
179 call ver_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
180 !$omp end parallel
181 call ver_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
182 call alloc_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
183 call ver_dt (y, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
184 call alloc_dt (y, 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
185 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
186 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
187 call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
188 call alloc_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
189 !$omp parallel private (x, y, z)
190 call ver_dt (x, 0, T, -3, -1, T, T, -1, -1, 2, 3, T)
191 call ver_dt (y, 0, T, 3, 4, F, T, 1, 1, 2, 4, T)
192 deallocate (x%h, x%k)
193 deallocate (y%h)
194 allocate (y%k)
195 call ver_dt (z(-3,2), 0, T, -3, -1, T, T, -1, -1, 2, 3, T)
196 call ver_dt (z(-3,3), 0, T, 3, 4, F, T, 1, 1, 2, 4, T)
197 deallocate (z(-3,2)%h, z(-3,2)%k)
198 deallocate (z(-3,3)%h)
199 allocate (z(-3,3)%k)
200 !$omp end parallel
201 call alloc_dt (x, 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
202 call alloc_dt (y, 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
203 call alloc_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
204 call alloc_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
205 !$omp parallel firstprivate (x, y, z)
206 call ver_dt (x, 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
207 call alloc_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
208 call ver_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
209 call ver_dt (y, 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
210 call alloc_dt (y, 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
211 call ver_dt (y, 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
212 call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
213 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
214 call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
215 call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
216 call alloc_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
217 call ver_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
218 !$omp end parallel
219 call ver_dt (x, 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
220 call alloc_dt (x, 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
221 call ver_dt (y, 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
222 call alloc_dt (y, 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
223 call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
224 call alloc_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
225 call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
226 call alloc_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
227 !$omp parallel firstprivate (x, y, z)
228 call ver_dt (x, 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
229 call alloc_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
230 call ver_dt (x, 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
231 call ver_dt (y, 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
232 call alloc_dt (y, 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
233 call ver_dt (y, 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
234 call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
235 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
236 call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
237 call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
238 call alloc_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
239 call ver_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
240 !$omp end parallel
241 call ver_dt (x, 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
242 call ver_dt (y, 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
243 call alloc_dt (y, 18, T, 0, 1, T, T, 0, 1, 0, 1, T)
244 call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
245 call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
246 call alloc_dt (z(-3,3), 18, T, 0, 1, T, T, 0, 1, 0, 1, T)
247 l = F
248 !$omp parallel sections lastprivate (x, y, z) firstprivate (l)
249 !$omp section
250 if (l) then
251 call ver_dt (x, 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
252 call ver_dt (y, 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
253 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
254 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
255 else
256 call ver_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
257 call ver_dt (y, 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
258 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
259 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
260 end if
261 l = T
262 call alloc_dt (x, 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
263 call ver_dt (x, 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
264 call alloc_dt (y, 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
265 call ver_dt (y, 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
266 call alloc_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
267 call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
268 call alloc_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
269 call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
270 !$omp section
271 if (l) then
272 call ver_dt (x, 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
273 call ver_dt (y, 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
274 call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
275 call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
276 else
277 call ver_dt (x, 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
278 call ver_dt (y, 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
279 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
280 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
281 end if
282 l = T
283 call alloc_dt (x, 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
284 call ver_dt (x, 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
285 call alloc_dt (y, 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
286 call ver_dt (y, 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
287 call alloc_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
288 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
289 call alloc_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
290 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
291 !$omp section
292 !$omp end parallel sections
293 call ver_dt (x, 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
294 call ver_dt (y, 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
295 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
296 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
297 !$omp parallel sections lastprivate (x, y, z) firstprivate (l)
298 !$omp section
299 if (l) then
300 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
301 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
302 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
303 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
304 else
305 call ver_dt (x, 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
306 call ver_dt (y, 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
307 call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
308 call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
309 end if
310 l = T
311 call alloc_dt (x, 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
312 call ver_dt (x, 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
313 call alloc_dt (y, 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
314 call ver_dt (y, 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
315 call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
316 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
317 call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
318 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
319 !$omp section
320 if (l) then
321 call ver_dt (x, 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
322 call ver_dt (y, 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
323 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
324 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
325 else
326 call ver_dt (x, 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
327 call ver_dt (y, 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
328 call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
329 call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
330 end if
331 l = T
332 call alloc_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
333 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
334 call alloc_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
335 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
336 call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
337 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
338 call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
339 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
340 !$omp section
341 !$omp end parallel sections
342 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
343 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
344 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
345 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
346 !$omp parallel private (x, y, z)
347 call ver_dt (x, 0, F, 0, 0, T, T, -1, -1, -1, -1, T)
348 call ver_dt (y, 0, T, 0, 1, T, T, 2, 2, 2, 2, F)
349 call ver_dt (z(-3,2), 0, F, 0, 0, T, T, -1, -1, -1, -1, T)
350 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 2, 2, 2, 2, F)
351 !$omp single
352 call alloc_dt (x, 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
353 call alloc_dt (y, 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
354 call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
355 call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
356 !$omp end single copyprivate (x, y, z)
357 call ver_dt (x, 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
358 call ver_dt (y, 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
359 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
360 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
361 !$omp end parallel
362 call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
363 call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
364 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
365 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
366 end subroutine foo