111
|
1 ! { dg-do run }
|
|
2 ! { dg-options "-fdump-tree-original" }
|
|
3 !
|
|
4 ! PR 43969: [OOP] ALLOCATED() with polymorphic variables
|
|
5 !
|
|
6 ! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
|
|
7
|
|
8
|
|
9 module foo_mod
|
|
10 type foo_inner
|
|
11 integer, allocatable :: v(:)
|
|
12 end type foo_inner
|
|
13 type foo_outer
|
|
14 class(foo_inner), allocatable :: int
|
|
15 end type foo_outer
|
|
16 contains
|
|
17 subroutine foo_checkit()
|
|
18 implicit none
|
|
19 type(foo_outer) :: try
|
|
20 type(foo_outer),allocatable :: try2
|
|
21 class(foo_outer), allocatable :: try3
|
|
22
|
|
23 if (allocated(try%int)) call abort()
|
|
24 allocate(foo_outer :: try3)
|
|
25 if (allocated(try3%int)) call abort()
|
|
26 allocate(try2)
|
|
27 if (allocated(try2%int)) call abort()
|
|
28
|
|
29 end subroutine foo_checkit
|
|
30 end module foo_mod
|
|
31
|
|
32
|
|
33 program main
|
|
34
|
|
35 use foo_mod
|
|
36 implicit none
|
|
37
|
|
38 call foo_checkit()
|
|
39
|
|
40 end program main
|
|
41
|
|
42 ! { dg-final { scan-tree-dump-times "__builtin_free" 12 "original" } }
|