! { dg-do run }
! Don't cycle by default through all options, just test -O0 and -O2,
! as this is quite large test.
! { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } }
! { dg-timeout-factor 2.0 { target hppa*-*-* } }

module m
  type dl
    integer :: a, b
    integer, allocatable :: c(:,:)
    integer :: d, e
    integer, allocatable :: f
  end type
  type dt
    integer :: g
    type (dl), allocatable :: h(:)
    integer :: i
    type (dl) :: j(2, 2)
    type (dl), allocatable :: k
  end type
contains
  subroutine ver_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
    type (dl), intent (in) :: obj
    integer, intent (in) :: val, cl1, cu1, cl2, cu2
    logical, intent (in) :: c, f
    if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) stop 1
    if (c) then
      if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) stop 2
      if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) stop 3
    end if
    if (val /= 0) then
      if (obj%a /= val .or. obj%b /= val) stop 4
      if (obj%d /= val .or. obj%e /= val) stop 5
      if (c) then
        if (any (obj%c /= val)) stop 6
      end if
      if (f) then
        if (obj%f /= val) stop 7
      end if
    end if
  end subroutine ver_dl
  subroutine ver_dt (obj, val, h, hl, hu, k, c, cl1, cu1, cl2, cu2, f)
    type (dt), intent (in) :: obj
    integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
    logical, intent (in) :: h, k, c, f
    integer :: i, j
    if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) stop 8
    if (h) then
      if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) stop 9
      do i = hl, hu
        call ver_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
      end do
    end if
    do i = 1, 2
      do j = 1, 2
        call ver_dl (obj%j(i, j), val, c, cl1, cu1, cl2, cu2, f)
      end do
    end do
    if (k) call ver_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
    if (val /= 0) then
      if (obj%g /= val .or. obj%i /= val) stop 10
    end if
  end subroutine ver_dt
  subroutine alloc_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
    type (dl), intent (inout) :: obj
    integer, intent (in) :: val, cl1, cu1, cl2, cu2
    logical, intent (in) :: c, f
    if (val /= 0) then
      obj%a = val
      obj%b = val
      obj%d = val
      obj%e = val
    end if
    if (allocated (obj%c)) deallocate (obj%c)
    if (c) then
      allocate (obj%c(cl1:cu1, cl2:cu2))
      if (val /= 0) obj%c = val
    end if
    if (f) then
      if (.not.allocated (obj%f)) allocate (obj%f)
      if (val /= 0) obj%f = val
    else
      if (allocated (obj%f)) deallocate (obj%f)
    end if
  end subroutine alloc_dl
  subroutine alloc_dt (obj, val, h, hl, hu, k, c, cl1, cu1, cl2, cu2, f)
    type (dt), intent (inout) :: obj
    integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
    logical, intent (in) :: h, k, c, f
    integer :: i, j
    if (val /= 0) then
      obj%g = val
      obj%i = val
    end if
    if (allocated (obj%h)) deallocate (obj%h)
    if (h) then
      allocate (obj%h(hl:hu))
      do i = hl, hu
        call alloc_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
      end do
    end if
    do i = 1, 2
      do j = 1, 2
        call alloc_dl (obj%j(i, j), val, c, cl1, cu1, cl2, cu2, f)
      end do
    end do
    if (k) then
      if (.not.allocated (obj%k)) allocate (obj%k)
      call alloc_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
    else
      if (allocated (obj%k)) deallocate (obj%k)
    end if
  end subroutine alloc_dt
end module m
  use m
  type (dt), allocatable :: z(:,:)
  type (dt) :: y(2:3)
  call foo (y, z, 4)
contains
  subroutine foo (y, z, n)
    use m
    integer :: n
    type (dt) :: x(2:n), y(3:)
    type (dt), allocatable :: z(:,:)
    logical, parameter :: F = .false.
    logical, parameter :: T = .true.
    logical :: l
    if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) stop 11
    if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) stop 12
    call ver_dt (x(2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (x(n), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
!$omp parallel private (z)
    if (allocated (z)) stop 13
!$omp end parallel
!$omp parallel firstprivate (z)
    if (allocated (z)) stop 14
!$omp end parallel
    l = F
!$omp parallel sections lastprivate (z) firstprivate (l)
!$omp section
    if (.not. l) then
      if (allocated (z)) stop 15
    end if
!$omp section
    if (.not. l) then
      if (allocated (z)) stop 16
    end if
    allocate (z(-3:-3,2:3))
    call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp section
!$omp end parallel sections
    if (.not.allocated (z)) stop 17
    if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) stop 18
    if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) stop 19
    call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
!$omp parallel private (x, y, z)
    call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (y(4), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
    call ver_dt (y(4), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
    call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
    call ver_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
!$omp end parallel
    call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (y(4), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
    call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,3), 14, T, 3, 4, F, T, 1, 1, 2, 4, T)
!$omp parallel private (x, y, z)
    call ver_dt (x(n - 1), 0, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (y(4), 0, T, 3, 4, F, T, 1, 1, 2, 4, T)
    deallocate (x(n - 1)%h, x(n - 1)%k)
    deallocate (y(4)%h)
    allocate (y(4)%k)
    call ver_dt (z(-3,2), 0, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,3), 0, T, 3, 4, F, T, 1, 1, 2, 4, T)
    deallocate (z(-3,2)%h, z(-3,2)%k)
    deallocate (z(-3,3)%h)
    allocate (z(-3,3)%k)
!$omp end parallel
    call alloc_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (y(4), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
    call alloc_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
!$omp parallel firstprivate (x, y, z)
    if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) stop 20
    if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) stop 21
    call ver_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (y(4), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
    call alloc_dt (y(4), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
    call ver_dt (y(4), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
    call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
    call alloc_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
    call ver_dt (z(-3,3), 4, T, 3, 4, T, T, 1, 1, 2, 4, T)
!$omp end parallel
    call ver_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(4), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
    call alloc_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
    call alloc_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
    call alloc_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
!$omp parallel firstprivate (x, y, z)
    call ver_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (y(4), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
    call ver_dt (y(4), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
    call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,2), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
    call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
    call ver_dt (z(-3,3), 17, T, 1, 2, F, T, 2, 2, 3, 3, F)
!$omp end parallel
    call ver_dt (x(n - 1), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(4), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (y(4), 18, T, 0, 1, T, T, 0, 1, 0, 1, T)
    call ver_dt (z(-3,2), 4, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (z(-3,3), 16, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call alloc_dt (z(-3,3), 18, T, 0, 1, T, T, 0, 1, 0, 1, T)
    l = F
!$omp parallel sections lastprivate (x, y, z) firstprivate (l)
!$omp section
    if (l) then
      call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
      call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
    else
      call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
      call ver_dt (y(4), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
      call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
      call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
    end if
    l = T
    call alloc_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
    call ver_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
    call alloc_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
    call ver_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
    call alloc_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
    call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
    call alloc_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
    call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
!$omp section
    if (l) then
      call ver_dt (x(n - 1), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
      call ver_dt (y(4), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
      call ver_dt (z(-3,2), 7, T, 1, 1, T, T, 1, 2, 3, 3, T)
      call ver_dt (z(-3,3), 20, T, 0, 0, F, T, 2, 2, 3, 4, F)
    else
      call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
      call ver_dt (y(4), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
      call ver_dt (z(-3,2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
      call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 0, 1, 0, 1, T)
    end if
    l = T
    call alloc_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call alloc_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
    call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
    call alloc_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call alloc_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
    call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
!$omp section
!$omp end parallel sections
    call ver_dt (x(n - 1), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call ver_dt (y(4), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
    call ver_dt (z(-3,2), 9, T, 1, 1, F, F, 0, 0, 0, 0, T)
    call ver_dt (z(-3,3), 21, F, 0, 0, T, T, 1, 2, 3, 4, T)
!$omp parallel sections lastprivate (x, y, z) firstprivate (l)
!$omp section
    if (l) then
      call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
      call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
      call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
      call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    else
      call ver_dt (x(n - 1), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (y(4), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
      call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
    end if
    l = T
    call alloc_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call alloc_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
!$omp section
    if (l) then
      call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
      call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
      call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
      call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    else
      call ver_dt (x(n - 1), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (y(4), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
      call ver_dt (z(-3,2), 0, T, 1, 1, F, F, 0, 0, 0, 0, T)
      call ver_dt (z(-3,3), 0, F, 0, 0, T, T, 1, 2, 3, 4, T)
    end if
    l = T
    call alloc_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call alloc_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call alloc_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp section
!$omp end parallel sections
    call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp parallel private (x, y, z)
    call ver_dt (x(n - 1), 0, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (y(4), 0, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (z(-3,2), 0, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,3), 0, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp single
    call alloc_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call alloc_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    call alloc_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call alloc_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
!$omp end single copyprivate (x, y, z)
    call ver_dt (x(n - 1), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call ver_dt (y(4), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
    call ver_dt (z(-3,2), 3, F, 0, 0, T, T, 0, 1, 0, 1, F)
    call ver_dt (z(-3,3), 22, T, 5, 5, F, T, 2, 3, 2, 2, T)
!$omp end parallel
    call ver_dt (x(n - 1), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (y(4), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
    call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
    call ver_dt (x(2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (x(n), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
    call ver_dt (y(3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
  end subroutine foo
end
