From: Julian Brown Date: Thu, 25 Jun 2020 14:40:53 +0000 (-0700) Subject: openacc: Fix race condition in Fortran loop collapse tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3148672485fa5dbe0c89475990d6730c47f45f2e;p=thirdparty%2Fgcc.git openacc: Fix race condition in Fortran loop collapse tests The gangs participating in a gang-partitioned loop are not all guaranteed to complete before some given gang continues to execute beyond that loop. This means that two existing test cases contain a race condition, because a loop that may be gang-partitioned is followed immediately by another loop. The fix is to place the loops in separate parallel regions. 2020-07-15 Julian Brown libgomp/ * testsuite/libgomp.oacc-fortran/collapse-1.f90: Fix race condition. * testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise. --- diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp index 55ea30fb60a1..c5df8200935e 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,3 +1,8 @@ +2020-07-15 Julian Brown + + * testsuite/libgomp.oacc-fortran/collapse-1.f90: Fix race condition. + * testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise. + 2020-07-15 Tobias Burnus Backport from mainline diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 index 918c5d0d5b1c..4857752f1b0a 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 @@ -14,6 +14,9 @@ program collapse1 end do end do end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) do i = 1, 3 do j = 4, 6 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 index 98b6987750ec..0a543909127e 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 @@ -13,6 +13,9 @@ program collapse2 do 164 k = 5, 7 a(i, j, k) = i + j + k 164 end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) firstdo: do i = 1, 3 do j = 4, 6