diff mbox

[Fortran,committed] Fix race condition in coarray test case

Message ID 53B3A515.20104@net-b.de
State New
Headers show

Commit Message

Tobias Burnus July 2, 2014, 6:22 a.m. UTC
I have committed the attached test case as Rev. 212220. The problem 
popped up with the MPI version of the library. The race came apparent 
with Open MPI 1.8 (but not 1.7) which shows how the one-sided 
communication in Open MPI improved with 1.8 …

Tobias
diff mbox

Patch

Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog	(Revision 212219)
+++ gcc/testsuite/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,9 @@ 
+2014-07-02  Tobias Burnus  <burnus@net-b.de>
+
+	* gfortran.dg/coarray/get_array.f90: Add missing SYNC ALL.
+	* gfortran.dg/coarray/send_array.f90: Ditto.
+	* gfortran.dg/coarray/sendget_array.f90: Ditto.
+
 2014-07-01  James Greenhalgh  <james.greenhalgh@arm.com>
 	    Yufeng Zhang  <yufeng.zhang@arm.com>
 
Index: gcc/testsuite/gfortran.dg/coarray/get_array.f90
===================================================================
--- gcc/testsuite/gfortran.dg/coarray/get_array.f90	(Revision 212219)
+++ gcc/testsuite/gfortran.dg/coarray/get_array.f90	(Arbeitskopie)
@@ -52,6 +52,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -76,6 +77,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -101,6 +103,7 @@  contains
                     if (any (c /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -135,6 +138,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -159,6 +163,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -184,6 +189,7 @@  contains
                     if (any (c /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -218,6 +224,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -242,6 +249,7 @@  contains
     if (any (a /= c)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -267,6 +275,7 @@  contains
                     if (any (c /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do
Index: gcc/testsuite/gfortran.dg/coarray/send_array.f90
===================================================================
--- gcc/testsuite/gfortran.dg/coarray/send_array.f90	(Revision 212219)
+++ gcc/testsuite/gfortran.dg/coarray/send_array.f90	(Arbeitskopie)
@@ -44,6 +44,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Whole array: ARRAY = ARRAY
     caf = -42
@@ -58,6 +59,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -90,6 +92,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -136,6 +139,7 @@  contains
                         call abort()
                       endif
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -183,6 +187,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -215,6 +220,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -261,6 +267,7 @@  contains
                         call abort()
                       endif
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -308,6 +315,7 @@  contains
       if (any (a /= caf)) &
            call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -386,6 +394,7 @@  contains
                         call abort()
                       endif
                     end if
+                    sync all
                   end do
                 end do
               end do
Index: gcc/testsuite/gfortran.dg/coarray/sendget_array.f90
===================================================================
--- gcc/testsuite/gfortran.dg/coarray/sendget_array.f90	(Revision 212219)
+++ gcc/testsuite/gfortran.dg/coarray/sendget_array.f90	(Arbeitskopie)
@@ -52,6 +52,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -76,6 +77,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -101,6 +103,7 @@  contains
                     if (any (caf2 /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -135,6 +138,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -159,6 +163,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -184,6 +189,7 @@  contains
                     if (any (caf2 /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do
@@ -218,6 +224,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Scalar assignment
     caf = -42
@@ -242,6 +249,7 @@  contains
     if (any (a /= caf2)) then
       call abort()
     end if
+    sync all
 
     ! Array sections with different ranges and pos/neg strides
     do i_sgn1 = -1, 1, 2
@@ -267,6 +275,7 @@  contains
                     if (any (caf2 /= a)) then
                       call abort()
                     end if
+                    sync all
                   end do
                 end do
               end do