2 ! { dg-options "-fcoarray=lib -lcaf_single -fdump-tree-original" }
3 ! { dg-additional-options "-latomic" { target libatomic_available } }
5 ! Allocate/deallocate with libcaf.
11 integer, allocatable
:: i
12 real, allocatable
:: r(:)
15 type(t
), allocatable
:: xx
[:]
19 if (allocated(xx
%i
)) call abort()
20 if (allocated(xx
[1]%i
)) call abort()
21 if (allocated(xx
[1]%r
)) call abort()
23 if (.not
. allocated(xx
[1]%i
)) call abort()
24 if (allocated(xx
[1]%r
)) call abort()
27 if (.not
. allocated(xx
[1]%i
)) call abort()
28 if (.not
. allocated(xx
[1]%r
)) call abort()
31 if (allocated(xx
[1]%i
)) call abort()
32 if (.not
. allocated(xx
[1]%r
)) call abort()
35 if (allocated(xx
[1]%i
)) call abort()
36 if (allocated(xx
[1]%r
)) call abort()
41 ! { dg-final { scan-tree-dump-times "_gfortran_caf_is_present \\(xx\\.token, 2 - \\(integer\\(kind=4\\)\\) xx\\.dim\\\[0\\\]\\.lbound, &caf_ref\\.\[0-9\]+\\)|_gfortran_caf_is_present \\(xx\\.token, 2 - xx\\.dim\\\[0\\\]\\.lbound, &caf_ref\\.\[0-9\]+\\)" 10 "original" } }
42 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 1, &xx\\.token, \\(void \\*\\) &xx, 0B, 0B, 0\\)" 1 "original" } }
43 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 7" 2 "original" } }
44 ! { dg-final { scan-tree-dump-times "_gfortran_caf_register \\(\[0-9\]+, 8" 2 "original" } }
45 ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&xx\\.token, 0, 0B, 0B, 0\\)" 1 "original" } }
46 ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&\\(\\(struct t \\* restrict\\) xx\\.data\\)->r\\.token, 1, 0B, 0B, 0\\)" 1 "original" } }
47 ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister \\(&\\(\\(struct t \\* restrict\\) xx\\.data\\)->_caf_i, 1, 0B, 0B, 0\\)" 1 "original" } }