1! { dg-do compile } 2! { dg-options "-fdump-tree-original -fcoarray=lib" } 3! 4! Argument passing was wrong 5! 6 7program atomic 8 use iso_fortran_env 9 implicit none 10 11 integer :: me 12 integer(atomic_int_kind) :: atom[*] 13 me = this_image() 14 call atomic_define(atom[1],0) 15 sync all 16 call ATOMIC_ADD (atom[1], me) 17 if(me == 1) call atomic_ref(me,atom[1]) 18 sync all 19 write(*,*) me 20end program 21 22! { dg-final { scan-tree-dump-times "value.. = 0;" 1 "original" } } 23! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.0, 0, 1, &value.., 0B, 1, 4\\);" 1 "original" } } 24! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_op \\(1, caf_token.0, 0, 1, &me, 0B, 0B, 1, 4\\);" 1 "original" } } 25! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_ref \\(caf_token.0, 0, 1, &me, 0B, 1, 4\\);" 1 "original" } } 26! { dg-final { cleanup-tree-dump "original" } } 27