! { dg-do run } module test_functions contains integer function compute_sum1() result(sum) implicit none integer :: i,j sum = 0 !$omp parallel do reduction(+:sum) private(j) do i = 1,10,3 !$omp tile sizes(2) do j = 1,10,3 sum = sum + 1 end do end do end function integer function compute_sum2() result(sum) implicit none integer :: i,j sum = 0 !$omp parallel do reduction(+:sum) private(j) do i = 1,10,3 !$omp tile sizes(16) do j = 1,10,3 sum = sum + 1 end do end do end function integer function compute_sum3() result(sum) implicit none integer :: i,j sum = 0 !$omp parallel do reduction(+:sum) private(j) do i = 1,10,3 !$omp tile sizes(100) do j = 1,10,3 sum = sum + 1 end do end do end function integer function compute_sum4() result(sum) implicit none integer :: i,j sum = 0 !$omp parallel do reduction(+:sum) private(i, j) !$omp tile sizes(6,10) do i = 1,10,3 do j = 1,10,3 sum = sum + 1 end do end do end function integer function compute_sum5() result(sum) implicit none integer :: i,j sum = 0 !$omp parallel do collapse(2) reduction(+:sum) private(i, j) !$omp tile sizes(6,10) do i = 1,10,3 do j = 1,10,3 sum = sum + 1 end do end do !$omp end tile !$omp end parallel do end function end module test_functions program test use test_functions implicit none integer :: result result = compute_sum1 () if (result .ne. 16) then stop 1 end if result = compute_sum2 () if (result .ne. 16) then stop 2 end if result = compute_sum3 () if (result .ne. 16) then stop 3 end if result = compute_sum4 () if (result .ne. 16) then stop 4 end if result = compute_sum5 () if (result .ne. 16) then stop 5 end if end program