1! { dg-do run }
2
3program collapse1
4  integer :: i, j, k, a(1:3, 4:6, 5:7)
5  logical :: l
6  l = .false.
7  a(:, :, :) = 0
8  !$omp parallel do collapse(4 - 1) schedule(static, 4)
9    do i = 1, 3
10      do j = 4, 6
11        do k = 5, 7
12          a(i, j, k) = i + j + k
13        end do
14      end do
15    end do
16  !$omp parallel do collapse(2) reduction(.or.:l)
17    do i = 1, 3
18      do j = 4, 6
19        do k = 5, 7
20          if (a(i, j, k) .ne. (i + j + k)) l = .true.
21        end do
22      end do
23    end do
24  !$omp end parallel do
25  if (l) stop 1
26end program collapse1
27