| ! { dg-do compile } |
| ! { dg-additional-options "-fdump-tree-original" } |
| ! PR 94361 - this left open some memory leaks. Original test case by |
| ! Antony Lewis. |
| |
| module debug |
| private |
| |
| Type TypeWithFinal |
| contains |
| FINAL :: finalizer !No leak if this line is commented |
| end type TypeWithFinal |
| |
| Type Tester |
| real, dimension(:), allocatable :: Dat |
| Type(TypeWithFinal) :: X |
| end Type Tester |
| |
| Type :: TestType2 |
| Type(Tester) :: T |
| end type TestType2 |
| public Leaker |
| contains |
| |
| subroutine Leaker |
| type(TestType2) :: Test |
| |
| allocate(Test%T%Dat(1000)) |
| end subroutine Leaker |
| |
| subroutine finalizer(this) |
| Type(TypeWithFinal) :: this |
| end subroutine finalizer |
| |
| end module debug |
| |
| |
| program run |
| use debug |
| implicit none |
| integer i |
| |
| do i=1, 1000 |
| call Leaker() |
| end do |
| |
| end program run |
| ! { dg-final { scan-tree-dump-times "__builtin_free\\ \\(ptr2" 2 "original" } } |