| ! { dg-do compile } |
| ! { dg-options "-fcoarray=single" } |
| ! |
| ! Contributed by Reinhold Bader |
| ! |
| ! |
| program def_and_ref |
| ! compile only |
| use, intrinsic :: iso_fortran_env |
| implicit none |
| type :: e |
| integer(kind=atomic_int_kind) :: ia = 0 |
| logical(kind=atomic_logical_kind) :: la = .false. |
| end type |
| |
| type(e) :: a[*] |
| |
| integer :: ival = 0 |
| logical :: lval = .false. |
| |
| if (this_image() == 1) then |
| call atomic_define(a[num_images()]%ia, 4) |
| call atomic_define(a[num_images()]%la, .true.) |
| end if |
| if (this_image() == num_images()) then |
| do while (ival == 0 .or. .not. lval) |
| call atomic_ref(ival, a%ia) |
| call atomic_ref(lval, a%la) |
| end do |
| if (ival == 4 .and. lval) then |
| write(*,*) 'OK' |
| else |
| write(*,*) 'FAIL: ival,lval =', ival, lval |
| end if |
| end if |
| end program |