1! { dg-do compile } 2! { dg-options "-fdump-tree-original -fcoarray=lib" } 3! 4program function_stat 5 implicit none 6 7 integer :: me[*],tmp,stat,stat2,next 8 9 me = this_image() 10 next = me + 1 11 if(me == num_images()) next = 1 12 stat = 0 13 14 sync all(stat=stat) 15 16 if(stat /= 0) write(*,*) 'Image failed during sync' 17 18 stat = 0 19 if(me == 1) then 20 tmp = func(me[4,stat=stat]) 21 if(stat /= 0) write(*,*) me,'failure in func arg' 22 else if(me == 2) then 23 tmp = func2(me[1,stat=stat2],me[3,stat=stat]) 24 if(stat2 /= 0 .or. stat /= 0) write(*,*) me,'failure in func2 args' 25 endif 26 27contains 28 29 function func(remote_me) 30 integer func 31 integer remote_me 32 func = remote_me 33 end function func 34 35 function func2(remote_me,remote_neighbor) 36 integer func2 37 integer remote_me,remote_neighbor 38 func2 = remote_me + remote_neighbor 39 end function func2 40 41end program function_stat 42 43! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) desc.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) me, 4, &desc.\[0-9\]+, 0B, &desc.\[0-9\]+, 4, 4, 0, &stat\\\);" 1 "original" } } 44! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) desc.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) me, 1, &desc.\[0-9\]+, 0B, &desc.\[0-9\]+, 4, 4, 0, &stat2\\\);" 1 "original" } } 45! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) desc.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) me, 3, &desc.\[0-9\]+, 0B, &desc.\[0-9\]+, 4, 4, 0, &stat\\\);" 1 "original" } } 46