gcc/libgomp/testsuite/libgomp.fortran/pr42162.f90
Jakub Jelinek 281e33e1bb re PR fortran/42162 (OpenMP: ICE: tree check in omp_add_variable, at gimplify.c:5282)
PR fortran/42162
	* trans-openmp.c (gfc_trans_omp_do): When dovar isn't a VAR_DECL,
	don't use simple loop and handle clauses properly.

	* testsuite/libgomp.fortran/pr42162.f90: New test.

From-SVN: r154654
2009-11-25 21:28:56 +01:00

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