1! { dg-do compile }
2! { dg-additional-options "-fdump-tree-original" }
3! PR 94361 - this left open some memory leaks.  Original test case by
4! Antony Lewis.
5
6module debug
7  private
8
9  Type TypeWithFinal
10   contains
11     FINAL :: finalizer  !No leak if this line is commented
12  end type TypeWithFinal
13
14  Type Tester
15     real, dimension(:), allocatable :: Dat
16     Type(TypeWithFinal) :: X
17  end Type Tester
18
19  Type :: TestType2
20     Type(Tester) :: T
21  end type TestType2
22  public Leaker
23contains
24
25  subroutine Leaker
26    type(TestType2) :: Test
27
28    allocate(Test%T%Dat(1000))
29  end subroutine Leaker
30
31  subroutine finalizer(this)
32    Type(TypeWithFinal) :: this
33  end subroutine finalizer
34
35end module debug
36
37
38program run
39  use debug
40  implicit none
41  integer i
42
43  do i=1, 1000
44     call Leaker()
45  end do
46
47end program run
48! { dg-final  { scan-tree-dump-times "__builtin_free\\ \\(ptr2" 2 "original" } }
49