https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121429

            Bug ID: 121429
           Summary: [caf_shmem] Test fails without explicit SYNC ALL
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jvdelisle at gcc dot gnu.org
  Target Milestone: ---

The following test fails without a SYNC ALL before or after the deallocate. 
Should the deallocate automatically sync the images?

program main
  implicit none
  integer, allocatable, codimension[:] :: a(:), b(:)
  integer :: n, i, left, right
  integer :: k
  n = num_images()
  i = this_image()
  if (n < 3) error stop "Need at least three images"
  left = modulo(i+n-2,n)+1
  right = modulo(i,n)+1
  do k=1,1000
     allocate(a(k+5)[*])
     allocate(b(k)[*])
     b(:)[right] = right + 1000 * k
     !sync all
     deallocate (a)  ! This synchronizes automatically
     !sync all
     if (any(b(:)[left] /= left + 1000 * k)) error stop "Test failed"
     deallocate (b)
  end do
end program main

Reply via email to