2 ! { dg-options "-fdump-tree-original" }
16 class(t
), allocatable
, intent(out
) :: x(:)
18 if (allocated (x
)) call abort()
19 if (.not
. same_type_as(x
, var_t
)) call abort()
25 class(t
), allocatable
, OPTIONAL
, intent(out
) :: x(:)
27 if (.not
. present(x
)) return
28 if (allocated (x
)) call abort()
29 if (.not
. same_type_as(x
, var_t
)) call abort()
37 class(t
), save, allocatable
:: y(:)
39 if (allocated (y
)) call abort()
40 if (.not
. same_type_as(y
,var_t
)) call abort()
43 if (.not
.allocated(y
)) call abort()
44 if (.not
. same_type_as(y
, var_t2
)) call abort()
45 if (size (y
) /= 5) call abort()
48 if (.not
.allocated(y
)) call abort()
49 if (.not
. same_type_as(y
, var_t2
)) call abort()
50 if (size (y
) /= 5) call abort()
53 if (allocated (y
)) call abort()
54 if (.not
. same_type_as(y
,var_t
)) call abort()
59 if (.not
.allocated(y
)) call abort()
60 if (.not
. same_type_as(y
, var_t2
)) call abort()
61 if (size (y
) /= 5) call abort()
64 if (.not
.allocated(y
)) call abort()
65 if (.not
. same_type_as(y
, var_t2
)) call abort()
66 if (size (y
) /= 5) call abort()
69 ! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } }
70 ! { dg-final { scan-tree-dump-times "finally" 0 "original" } }
71 ! { dg-final { cleanup-tree-dump "original" } }