(root)/
gcc-13.2.0/
gcc/
testsuite/
gfortran.dg/
goacc/
tile-lowering.f95
! { dg-do compile }
! { dg-additional-options "-fdump-tree-original" }

subroutine par
  integer i, j, k

  !$acc parallel
  !$acc loop tile (1)
  do i = 1, 10
  end do

  !$acc loop tile (*)
  do i = 1, 10
  end do

  !$acc loop tile (1,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (*,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (1,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (*,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (1,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (*,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (1,*,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (1,2,*)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do
  !$acc end parallel
end subroutine par

subroutine kerns
  integer i, j, k

  !$acc kernels
  !$acc loop tile (1)
  do i = 1, 10
  end do

  !$acc loop tile (*)
  do i = 1, 10
  end do

  !$acc loop tile (1,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (*,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (1,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (*,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc loop tile (1,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (*,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (1,*,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc loop tile (1,2,*)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do
  !$acc end kernels
end subroutine kerns

subroutine parloop
  integer i, j, k

  !$acc parallel loop tile (1)
  do i = 1, 10
  end do

  !$acc parallel loop tile (*)
  do i = 1, 10
  end do

  !$acc parallel loop tile (1,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc parallel loop tile (*,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc parallel loop tile (1,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc parallel loop tile (*,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc parallel loop tile (1,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc parallel loop tile (*,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc parallel loop tile (1,*,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc parallel loop tile (1,2,*)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do
end subroutine parloop

subroutine kernloop
  integer i, j, k

  !$acc kernels loop tile (1)
  do i = 1, 10
  end do

  !$acc kernels loop tile (*)
  do i = 1, 10
  end do

  !$acc kernels loop tile (1,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc kernels loop tile (*,2)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc kernels loop tile (1,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc kernels loop tile (*,*)
  do i = 1, 10
     do j = 1, 10
     end do
  end do

  !$acc kernels loop tile (1,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc kernels loop tile (*,2,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc kernels loop tile (1,*,3)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do

  !$acc kernels loop tile (1,2,*)
  do i = 1, 10
     do j = 1, 10
        do k = 1, 10
        end do
     end do
  end do
end subroutine kernloop


! { dg-final { scan-tree-dump-times "tile\\(1\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(0\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(1, 2\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(0, 2\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(1, 0\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(0, 0\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(1, 2, 3\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(0, 2, 3\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(1, 0, 3\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "tile\\(1, 2, 0\\)" 4 "original" } }
! { dg-final { scan-tree-dump-times "for \\(" 88 "original" } }
! { dg-final { scan-tree-dump-times "while \\(" 0 "original" } }