2 ! { dg-options "-fdump-tree-original" }
4 ! PR 42647: Missed initialization/dealloc of allocatable scalar DT with allocatable component
6 ! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
10 integer , allocatable
:: a1
13 integer , allocatable
:: a2(:)
17 type(st
), allocatable
:: b1
20 type(st
), allocatable
:: b2(:)
23 type(at
), allocatable
:: b3
26 type(at
), allocatable
:: b4(:)
31 block
! Start new scoping unit as otherwise the vars are implicitly SAVEd
32 type(t1
) :: na1
, a1
, aa1(:)
33 type(t2
) :: na2
, a2
, aa2(:)
34 type(t3
) :: na3
, a3
, aa3(:)
35 type(t4
) :: na4
, a4
, aa4(:)
37 allocatable
:: a1
, a2
, a3
, a4
, aa1
, aa2
, aa3
,aa4
39 if(allocated(a1
)) call abort()
40 if(allocated(a2
)) call abort()
41 if(allocated(a3
)) call abort()
42 if(allocated(a4
)) call abort()
43 if(allocated(aa1
)) call abort()
44 if(allocated(aa2
)) call abort()
45 if(allocated(aa3
)) call abort()
46 if(allocated(aa4
)) call abort()
48 if(allocated(na1
%b1
)) call abort()
49 if(allocated(na2
%b2
)) call abort()
50 if(allocated(na3
%b3
)) call abort()
51 if(allocated(na4
%b4
)) call abort()
55 ! { dg-final { scan-tree-dump-times "__builtin_free" 32 "original" } }
56 ! { dg-final { cleanup-tree-dump "original" } }