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" } } 5 6module 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 20contains 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 113end module m 114 use m 115 type (dt), allocatable :: z(:,:) 116 type (dt) :: y(2:3) 117 call foo (y, z, 4) 118contains 119 subroutine foo (y, z, n) 120 use m 121 integer :: n 122 type (dt) :: x(2:n), y(3:) 123 type (dt), allocatable :: z(:,:) 124 logical, parameter :: F = .false. 125 logical, parameter :: T = .true. 126 logical :: l 127 if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) stop 11 128 if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) stop 12 129 call ver_dt (x(2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 130 call ver_dt (x(n), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 131 call ver_dt (y(3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 132 call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 133!$omp parallel private (z) 134 if (allocated (z)) stop 13 135!$omp end parallel 136!$omp parallel firstprivate (z) 137 if (allocated (z)) stop 14 138!$omp end parallel 139 l = F 140!$omp parallel sections lastprivate (z) firstprivate (l) 141!$omp section 142 if (.not. l) then 143 if (allocated (z)) stop 15 144 end if 145!$omp section 146 if (.not. l) then 147 if (allocated (z)) stop 16 148 end if 149 allocate (z(-3:-3,2:3)) 150 call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 151 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 152 call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 153 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 154!$omp section 155!$omp end parallel sections 156 if (.not.allocated (z)) stop 17 157 if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) stop 18 158 if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) stop 19 159 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 160 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 161 call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 162 call ver_dt (y(4), 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(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 169 call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 170 call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 171 call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 172 call alloc_dt (y(4), 14, T, 3, 4, F, T, 1, 1, 2, 4, T) 173 call ver_dt (y(4), 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(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 182 call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 183 call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 184 call alloc_dt (y(4), 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(n - 1), 0, T, -3, -1, T, T, -1, -1, 2, 3, T) 191 call ver_dt (y(4), 0, T, 3, 4, F, T, 1, 1, 2, 4, T) 192 deallocate (x(n - 1)%h, x(n - 1)%k) 193 deallocate (y(4)%h) 194 allocate (y(4)%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(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F) 202 call alloc_dt (y(4), 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 if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) stop 20 207 if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) stop 21 208 call ver_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F) 209 call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 210 call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 211 call ver_dt (y(4), 15, F, 0, 0, T, T, 2, 2, 2, 2, T) 212 call alloc_dt (y(4), 4, T, 3, 4, T, T, 1, 1, 2, 4, T) 213 call ver_dt (y(4), 4, T, 3, 4, T, T, 1, 1, 2, 4, T) 214 call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F) 215 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 216 call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 217 call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T) 218 call alloc_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T) 219 call ver_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T) 220!$omp end parallel 221 call ver_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F) 222 call alloc_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 223 call ver_dt (y(4), 15, F, 0, 0, T, T, 2, 2, 2, 2, T) 224 call alloc_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 225 call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F) 226 call alloc_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 227 call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T) 228 call alloc_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 229!$omp parallel firstprivate (x, y, z) 230 call ver_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 231 call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 232 call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 233 call ver_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 234 call alloc_dt (y(4), 17, T, 1, 2, F, T, 2, 2, 3, 3, F) 235 call ver_dt (y(4), 17, T, 1, 2, F, T, 2, 2, 3, 3, F) 236 call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 237 call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 238 call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T) 239 call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 240 call alloc_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F) 241 call ver_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F) 242!$omp end parallel 243 call ver_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 244 call ver_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 245 call alloc_dt (y(4), 18, T, 0, 1, T, T, 0, 1, 0, 1, T) 246 call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F) 247 call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F) 248 call alloc_dt (z(-3,3), 18, T, 0, 1, T, T, 0, 1, 0, 1, T) 249 l = F 250!$omp parallel sections lastprivate (x, y, z) firstprivate (l) 251!$omp section 252 if (l) then 253 call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 254 call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 255 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 256 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 257 else 258 call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 259 call ver_dt (y(4), 0, T, 0, 1, T, T, 0, 1, 0, 1, T) 260 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 261 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T) 262 end if 263 l = T 264 call alloc_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 265 call ver_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 266 call alloc_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 267 call ver_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 268 call alloc_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 269 call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 270 call alloc_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 271 call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 272!$omp section 273 if (l) then 274 call ver_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 275 call ver_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 276 call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T) 277 call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F) 278 else 279 call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 280 call ver_dt (y(4), 0, T, 0, 1, T, T, 0, 1, 0, 1, T) 281 call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 282 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T) 283 end if 284 l = T 285 call alloc_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 286 call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 287 call alloc_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 288 call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 289 call alloc_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 290 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 291 call alloc_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 292 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 293!$omp section 294!$omp end parallel sections 295 call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 296 call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 297 call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T) 298 call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T) 299!$omp parallel sections lastprivate (x, y, z) firstprivate (l) 300!$omp section 301 if (l) then 302 call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 303 call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 304 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 305 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 306 else 307 call ver_dt (x(n - 1), 0, T, 1, 1, F, F, 0, 0, 0, 0, T) 308 call ver_dt (y(4), 0, F, 0, 0, T, T, 1, 2, 3, 4, T) 309 call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T) 310 call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T) 311 end if 312 l = T 313 call alloc_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 314 call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 315 call alloc_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 316 call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 317 call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 318 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 319 call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 320 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 321!$omp section 322 if (l) then 323 call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 324 call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 325 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 326 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 327 else 328 call ver_dt (x(n - 1), 0, T, 1, 1, F, F, 0, 0, 0, 0, T) 329 call ver_dt (y(4), 0, F, 0, 0, T, T, 1, 2, 3, 4, T) 330 call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T) 331 call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T) 332 end if 333 l = T 334 call alloc_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 335 call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 336 call alloc_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 337 call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 338 call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 339 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 340 call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 341 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 342!$omp section 343!$omp end parallel sections 344 call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 345 call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 346 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 347 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 348!$omp parallel private (x, y, z) 349 call ver_dt (x(n - 1), 0, F, 0, 0, T, T, -1, -1, -1, -1, T) 350 call ver_dt (y(4), 0, T, 0, 1, T, T, 2, 2, 2, 2, F) 351 call ver_dt (z(-3,2), 0, F, 0, 0, T, T, -1, -1, -1, -1, T) 352 call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 2, 2, 2, 2, F) 353!$omp single 354 call alloc_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 355 call alloc_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 356 call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 357 call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 358!$omp end single copyprivate (x, y, z) 359 call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 360 call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 361 call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F) 362 call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T) 363!$omp end parallel 364 call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 365 call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 366 call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T) 367 call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F) 368 call ver_dt (x(2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 369 call ver_dt (x(n), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 370 call ver_dt (y(3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F) 371 end subroutine foo 372end 373