1 ! RUN: bbc -emit-hlfir %s -o - -I nowhere | FileCheck %s
23 type, extends(t1
) :: t7
25 type, extends(t2
) :: t8
27 type, extends(t6
) :: t9
30 subroutine finalize_t6(x
)
31 type(t6
), intent(inout
) :: x
32 end subroutine finalize_t6
40 type(t1
) :: ret_type_t1
41 end function ret_type_t1
46 ! CHECK-LABEL: func.func @_QPtest1() {
47 ! CHECK-NOT: fir.call{{.*}}Destroy
54 type(t1
), allocatable
:: ret_type_t1a
55 end function ret_type_t1a
57 type(t1
), allocatable
:: x
60 ! CHECK-LABEL: func.func @_QPtest1a() {
61 ! CHECK-NOT: fir.call{{.*}}Destroy
62 ! CHECK: fir.if %{{.*}} {
63 ! CHECK-NEXT: fir.freemem %{{.*}} : !fir.heap<!fir.type<_QMtypesTt1{x:f32}>>
64 ! CHECK-NOT: fir.call{{.*}}Destroy
65 ! CHECK: fir.if %{{.*}} {
66 ! CHECK: fir.call @_FortranAAllocatableDeallocate({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32
67 ! CHECK-NOT: fir.call{{.*}}Destroy
74 class(t1
), allocatable
:: ret_class_t1
75 end function ret_class_t1
80 ! CHECK-LABEL: func.func @_QPtest1c() {
81 ! CHECK: fir.call @_FortranADestroy
82 ! CHECK: fir.if %{{.*}} {
83 ! CHECK-NEXT: fir.freemem %{{.*}} : !fir.heap<!fir.type<_QMtypesTt1{x:f32}>>
90 type(t2
) :: ret_type_t2
91 end function ret_type_t2
96 ! CHECK-LABEL: func.func @_QPtest2() {
97 ! CHECK: fir.call @_FortranADestroy
104 type(t3
) :: ret_type_t3
105 end function ret_type_t3
110 ! CHECK-LABEL: func.func @_QPtest3() {
111 ! CHECK-NOT: fir.call{{.*}}Destroy
118 type(t4
) :: ret_type_t4
119 end function ret_type_t4
124 ! CHECK-LABEL: func.func @_QPtest4() {
125 ! CHECK-NOT: fir.call{{.*}}Destroy
132 type(t5
) :: ret_type_t5
133 end function ret_type_t5
138 ! CHECK-LABEL: func.func @_QPtest5() {
139 ! CHECK: fir.call @_FortranADestroy
146 type(t6
) :: ret_type_t6
147 end function ret_type_t6
152 ! CHECK-LABEL: func.func @_QPtest6() {
153 ! CHECK: fir.call @_FortranADestroy
154 ! CHECK: fir.call @_FortranADestroy
161 type(t7
) :: ret_type_t7
162 end function ret_type_t7
167 ! CHECK-LABEL: func.func @_QPtest7() {
168 ! CHECK-NOT: fir.call{{.*}}Destroy
175 type(t8
) :: ret_type_t8
176 end function ret_type_t8
181 ! CHECK-LABEL: func.func @_QPtest8() {
182 ! CHECK: fir.call @_FortranADestroy
189 type(t9
) :: ret_type_t9
190 end function ret_type_t9
195 ! CHECK-LABEL: func.func @_QPtest9() {
196 ! CHECK: fir.call @_FortranADestroy
197 ! CHECK: fir.call @_FortranADestroy