gcc/libgomp/testsuite/libgomp.fortran/lastprivate1.f90

127 lines
2.9 KiB
Fortran

program lastprivate
integer :: i
common /c/ i
!$omp parallel num_threads (4)
call test1
!$omp end parallel
if (i .ne. 21) call abort
!$omp parallel num_threads (4)
call test2
!$omp end parallel
if (i .ne. 64) call abort
!$omp parallel num_threads (4)
call test3
!$omp end parallel
if (i .ne. 14) call abort
call test4
call test5
call test6
call test7
call test8
call test9
call test10
call test11
call test12
contains
subroutine test1
integer :: i
common /c/ i
!$omp do lastprivate (i)
do i = 1, 20
end do
end subroutine test1
subroutine test2
integer :: i
common /c/ i
!$omp do lastprivate (i)
do i = 7, 61, 3
end do
end subroutine test2
function ret3 ()
integer :: ret3
ret3 = 3
end function ret3
subroutine test3
integer :: i
common /c/ i
!$omp do lastprivate (i)
do i = -10, 11, ret3 ()
end do
end subroutine test3
subroutine test4
integer :: j
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = 1, 20
end do
if (j .ne. 21) call abort
end subroutine test4
subroutine test5
integer :: j
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = 7, 61, 3
end do
if (j .ne. 64) call abort
end subroutine test5
subroutine test6
integer :: j
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = -10, 11, ret3 ()
end do
if (j .ne. 14) call abort
end subroutine test6
subroutine test7
integer :: i
common /c/ i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = 1, 20
end do
if (i .ne. 21) call abort
end subroutine test7
subroutine test8
integer :: i
common /c/ i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = 7, 61, 3
end do
if (i .ne. 64) call abort
end subroutine test8
subroutine test9
integer :: i
common /c/ i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = -10, 11, ret3 ()
end do
if (i .ne. 14) call abort
end subroutine test9
subroutine test10
integer :: i
common /c/ i
!$omp parallel num_threads (4) default (none) shared (i)
!$omp do lastprivate (i)
do i = 1, 20
end do
!$omp end parallel
if (i .ne. 21) call abort
end subroutine test10
subroutine test11
integer :: i
common /c/ i
!$omp parallel num_threads (4) default (none) shared (i)
!$omp do lastprivate (i)
do i = 7, 61, 3
end do
!$omp end parallel
if (i .ne. 64) call abort
end subroutine test11
subroutine test12
integer :: i
common /c/ i
!$omp parallel num_threads (4) default (none) shared (i)
!$omp do lastprivate (i)
do i = -10, 11, ret3 ()
end do
!$omp end parallel
if (i .ne. 14) call abort
end subroutine test12
end program lastprivate