blob: 4eae92b39e8a7588989f1f06d1f1fe71da9edb5b [file] [log] [blame]
! { dg-do run }
program lastprivate
integer :: i
common /c/ i
!$omp parallel num_threads (4)
call test1
!$omp end parallel
if (i .ne. 21) stop 1
!$omp parallel num_threads (4)
call test2
!$omp end parallel
if (i .ne. 64) stop 2
!$omp parallel num_threads (4)
call test3
!$omp end parallel
if (i .ne. 14) stop 3
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) stop 4
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) stop 5
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) stop 6
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) stop 7
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) stop 8
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) stop 9
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) stop 10
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) stop 11
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) stop 12
end subroutine test12
end program lastprivate