gcc/libgomp/testsuite/libgomp.fortran/pr49792-1.f90
Jakub Jelinek c26dffff5c re PR fortran/49792 (OpenMP workshare: Wrong result with array assignment)
PR fortran/49792
	* trans-expr.c (gfc_trans_assignment_1): Set OMPWS_SCALARIZER_WS
	bit in ompws_flags only if loop.temp_ss is NULL, and clear it if
	lhs needs reallocation.
	* trans-openmp.c (gfc_trans_omp_workshare): Don't return early if
	code is NULL, emit a barrier if workshare emitted no code at all
	and NOWAIT clause isn't present.

	* testsuite/libgomp.fortran/pr49792-1.f90: New test.
	* testsuite/libgomp.fortran/pr49792-2.f90: New test.

From-SVN: r177898
2011-08-19 15:25:22 +02:00

19 lines
396 B
Fortran

! PR fortran/49792
! { dg-do run }
subroutine reverse(n, a)
integer :: n
real(kind=8) :: a(n)
!$omp parallel workshare
a(:) = a(n:1:-1)
!$omp end parallel workshare
end subroutine reverse
program pr49792
real(kind=8) :: a(16) = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
real(kind=8) :: b(16)
b(:) = a(16:1:-1)
call reverse (16,a)
if (any (a.ne.b)) call abort
end program pr49792