| ! { dg-do run } |
| |
| module test_functions |
| contains |
| integer function compute_sum() result(sum) |
| implicit none |
| integer :: i,j |
| |
| sum = 0 |
| !$omp parallel do reduction(+:sum) private(j) |
| do i = 1,10,3 |
| !$omp unroll full |
| 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(i, j) |
| !$omp unroll partial(2) |
| do i = 1,10,3 |
| do j = 1,10,3 |
| sum = sum + 1 |
| end do |
| end do |
| end function |
| end module test_functions |
| |
| program test |
| use test_functions |
| implicit none |
| |
| integer :: result |
| |
| result = compute_sum () |
| if (result .ne. 16) then |
| stop 1 |
| end if |
| |
| result = compute_sum2 () |
| if (result .ne. 16) then |
| stop 2 |
| end if |
| end program |