! { dg-do compile } ! { dg-options "-fcoarray=lib -fdump-tree-original" } ! ! Test that the compiler generates sync_all statements only at the required ! locations. This program is not supposed to run (allocating already alloced). program test_alloc_sync type :: T integer, allocatable :: i end type T type :: T2 type(T), allocatable :: o[:] end type T2 integer, allocatable :: caf[:] type (T) :: obj[*] type (T2) :: cafcomp allocate(caf[*]) ! implicit sync_all allocate(obj%i) ! asynchronous allocate(cafcomp%o[*]) ! sync allocate(cafcomp%o%i) ! async allocate(obj%i, cafcomp%o%i) ! async allocate(caf[*], obj%i, cafcomp%o%i) ! sync end program test_alloc_sync ! { dg-final { scan-tree-dump-times "caf_sync_all" 3 "original" } }