blob: eccfde37f82266a3e6413f1b1c5dda666e0c198a [file] [log] [blame]
! { 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" } }