On 2/11/26 1:48 AM, Tobias Burnus wrote:
Jerry D wrote:
     Fortran: Fix coarray assignment when rhs is complicated.
     gcc/fortran/ChangeLog:
             * resolve.cc: Introduce temporary holding rhs when lhs is a
             coarray expresssion.

Likewise: It would be good if there could be a testcase for this.

Tobias


Attached please find the requested testcase with a new commit to be applied
after the approvaal of the complete patch set.

Author: Jerry DeLisle <[email protected]>
Date:   Sat Feb 14 16:59:56 2026 -0800

    Fortran: Add new testcase for PR121360

    This test case is from the PR adjusted to reduce the execution
    time and included a suitable test condition. It was tested with
    export GFORTRAN_NUM_IMAGES=200 which of course takes a bit of
    time.

            PR fortran/121360

    gcc/testsuite/ChangeLog:

            * gfortran.dg/lock_3.f90: New test.

OK when the time comes for mainline?

Jerry
commit e74e83d268e7ecadb018368c6a9b7730d172d085
Author: Jerry DeLisle <[email protected]>
Date:   Sat Feb 14 16:59:56 2026 -0800

    Fortran: Add new testcase for PR121360
    
    This test case is from the PR adjusted to reduce the execution
    time and included a suitable test condition. It was tested with
    export GFORTRAN_NUM_IMAGES=200 which of course takes a bit of
    time.
    
            PR fortran/121360
    
    gcc/testsuite/ChangeLog:
    
            * gfortran.dg/lock_3.f90: New test.

diff --git a/gcc/testsuite/gfortran.dg/lock_3.f90 b/gcc/testsuite/gfortran.dg/lock_3.f90
new file mode 100644
index 00000000000..77b8f828bc2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/lock_3.f90
@@ -0,0 +1,22 @@
+program memain
+   use, intrinsic :: iso_fortran_env, only : lock_type
+   type(lock_type), codimension[*] :: lck
+   integer, codimension[*] :: count
+   integer :: i, j, s
+   do j=4,5  ! To be adjusted, dunno how long this runs
+     if (this_image() == 1) count = 0
+     sync all
+     do i=1,10**j
+        lock (lck[1])
+        count[1] = count[1] + 1
+        unlock (lck[1])
+     end do
+     sync all
+     if (this_image() == 1) then
+        !print *,"Expected: ",10**j*num_images(), "Found: ", count[1]
+        if (count[1] .ne. 10**j*num_images()) stop 1
+     end if
+     sync all
+   end do
+end program
+

Reply via email to