gcc/libgomp/testsuite/libgomp.fortran/pr42162.f90

54 lines
921 B
Fortran

! PR fortran/42162
! { dg-do run }
subroutine sub1(k, a)
implicit none
integer :: k, a(3)
!$omp do
do k=1,3
a(k) = a(k) + 1
enddo
!$omp end do
end subroutine sub1
subroutine sub2(k, a)
implicit none
integer :: k, a(3)
!$omp do private (k)
do k=1,3
a(k) = a(k) + 1
enddo
!$omp end do
end subroutine sub2
subroutine sub3(k, a)
implicit none
integer :: k, a(3)
!$omp do lastprivate (k)
do k=1,3
a(k) = a(k) + 1
enddo
!$omp end do
end subroutine sub3
program pr42162
implicit none
integer :: k, a(3), b(3), c(3)
a = 1
b = 2
c = 3
k = 3
!$omp parallel num_threads(3)
call sub1 (k, a)
!$omp end parallel
k = 4
!$omp parallel num_threads(3)
call sub2 (k, b)
!$omp end parallel
k = 10
!$omp parallel num_threads(3)
call sub3 (k, c)
!$omp end parallel
if (k.ne.4.or.any(a.ne.2).or.any(b.ne.3).or.any(c.ne.4)) call abort
end