! { dg-do compile } ! { dg-additional-options "-fdump-tree-original -fcoarray=lib" } ! ! PR 103970 ! Test case inspired by code submitted by Damian Rousson program main implicit none type foo_t integer i integer, allocatable :: j end type type(foo_t) foo integer, parameter :: source_image = 1 if (this_image() == source_image) then foo = foo_t(2,3) else allocate(foo%j) end if call co_broadcast(foo, source_image) if ((foo%i /= 2) .or. (foo%j /= 3)) error stop 1 sync all end program ! Wrong code generation produced too many temp descriptors ! leading to stacked descriptors handed to the co_broadcast. ! This lead to access to non exsitant memory in opencoarrays. ! In single image mode just checking for reduced number of ! descriptors is possible, i.e., execute always works. ! { dg-final { scan-tree-dump-times "desc\\.\[0-9\]+" 12 "original" } }