! { dg-do compile } ! { dg-options "-fopenmp" } ! Test that all specified forms of canonical loop bounds are accepted, ! including non-rectangular loops. subroutine s1 (a1, a2) integer :: a1, a2 integer :: i, j !$omp do collapse(2) do i = 1, 16 do j = a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i + a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 + i, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i - a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 - i, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a1 * i, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a1 * i + a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 + a1 * i , 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a1 * i - a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 - a1 * i, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i * a1, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i * a1 + a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 + i * a1, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = i * a1 - a2, 16 end do end do !$omp do collapse(2) do i = 1, 16 do j = a2 - i * a1, 16 end do end do end subroutine subroutine s2 (a1, a2) integer :: a1, a2 integer :: i, j !$omp do collapse(2) do i = 1, 16 do j = 1, a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i + a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 + i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i - a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 - i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a1 * i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a1 * i + a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 + a1 * i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a1 * i - a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 - a1 * i end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i * a1 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i * a1 + a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 + i * a1 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, i * a1 - a2 end do end do !$omp do collapse(2) do i = 1, 16 do j = 1, a2 - i * a1 end do end do end subroutine subroutine s3 (a1, a2) integer :: a1, a2 integer :: i, j, k !$omp do collapse(3) do i = 1, 16 do j = 1, i do k = j, 16 end do end do end do end subroutine