blob: c3de8c9644cfb80f6419dcd462ab63983bba7c5e [file] [log] [blame]
! { 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