@@ -21,10 +21,10 @@ module test_dinit
2121 ! Test local scalar is default initialized
2222 ! CHECK-LABEL: func @_QMtest_dinitPlocal()
2323 subroutine local
24- ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt{i:i32}> {bindc_name = "x", uniq_name = "_QMtest_dinitFlocalEx"}
25- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTt.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTt{i:i32}>>
26- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>
27- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ref< !fir.type<_QMtest_dinitTt{i: i32}>>
24+ ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt{i:i32}>
25+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTt{i:i32}>>
26+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
27+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
2828 type (t) :: x
2929 print * , x% i
3030 end subroutine
@@ -45,30 +45,30 @@ subroutine local_array()
4545 ! scalars.
4646 ! CHECK-LABEL: func @_QMtest_dinitPlocal_alloc_comp()
4747 subroutine local_alloc_comp
48- ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}> {bindc_name = "x", uniq_name = "_QMtest_dinitFlocal_alloc_compEx"}
49- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTt_alloc_comp.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}>>
50- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}>>
51- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ref<!fir.type<_QMtest_dinitTt_alloc_comp{i:!fir. box<!fir.heap<!fir.array<?xf32>>>}>>
48+ ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}>
49+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ref<!fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}>>) -> !fir.box <!fir.type<_QMtest_dinitTt_alloc_comp{i:!fir.box<!fir.heap<!fir.array<?xf32>>>}>>
50+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
51+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
5252 type (t_alloc_comp) :: x
5353 end subroutine
5454
5555 ! Test function results are default initialized.
5656 ! CHECK-LABEL: func @_QMtest_dinitPresult() -> !fir.type<_QMtest_dinitTt{i:i32}>
5757 function result ()
58- ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt{i:i32}> {bindc_name = "result", uniq_name = "_QMtest_dinitFresultEresult"}
59- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTt.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTt{i:i32}>>
60- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>
61- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ref< !fir.type<_QMtest_dinitTt{i: i32}>>
58+ ! CHECK: %[[x:.*]] = fir.alloca !fir.type<_QMtest_dinitTt{i:i32}>
59+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTt{i:i32}>>
60+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
61+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
6262 type (t) :: result
6363 end function
6464
6565 ! Test intent(out) dummies are default initialized
6666 ! CHECK-LABEL: func @_QMtest_dinitPintent_out(
6767 ! CHECK-SAME: %[[x:.*]]: !fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>
6868 subroutine intent_out (x )
69- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTt.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTt{i:i32}>>
70- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>
71- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ref< !fir.type<_QMtest_dinitTt{i: i32}>>
69+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ref<!fir.type<_QMtest_dinitTt{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTt{i:i32}>>
70+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
71+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
7272 type (t), intent (out ) :: x
7373 end subroutine
7474
@@ -94,9 +94,9 @@ subroutine local_eq()
9494 ! CHECK: %[[equiv:.*]] = fir.alloca !fir.array<4xi8>
9595 ! CHECK: %[[xcoor:.*]] = fir.coordinate_of %[[equiv]], %c0{{.*}} : (!fir.ref<!fir.array<4xi8>>, index) -> !fir.ref<i8>
9696 ! CHECK: %[[x:.*]] = fir.convert %[[xcoor]] : (!fir.ref<i8>) -> !fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>
97- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTtseq.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTtseq{i:i32}>>
98- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTtseq{i:i32}>>
99- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ptr< !fir.type<_QMtest_dinitTtseq{i: i32}>>
97+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTtseq{i:i32}>>
98+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
99+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
100100 equivalence (x, zi)
101101 print * , i
102102 end subroutine
@@ -112,16 +112,16 @@ subroutine local_eq2()
112112 ! CHECK: %[[equiv:.*]] = fir.alloca !fir.array<4xi8>
113113 ! CHECK: %[[xcoor:.*]] = fir.coordinate_of %[[equiv]], %c0{{.*}} : (!fir.ref<!fir.array<4xi8>>, index) -> !fir.ref<i8>
114114 ! CHECK: %[[x:.*]] = fir.convert %[[xcoor]] : (!fir.ref<i8>) -> !fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>
115- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTtseq.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTtseq{i:i32}>>
116- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTtseq{i:i32}>>
117- ! CHECK: fir.store %[[LOAD]] to %[[x]] : !fir.ptr< !fir.type<_QMtest_dinitTtseq{i: i32}>>
115+ ! CHECK: %[[xbox :.*]] = fir.embox %[[x]] : (!fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTtseq{i:i32}>>
116+ ! CHECK: %[[xboxNone :.*]] = fir.convert %[[xbox]]
117+ ! CHECK: fir.call @_FortranAInitialize( %[[xboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
118118
119119
120120 ! CHECK: %[[ycoor:.*]] = fir.coordinate_of %[[equiv]], %c0{{.*}} : (!fir.ref<!fir.array<4xi8>>, index) -> !fir.ref<i8>
121121 ! CHECK: %[[y:.*]] = fir.convert %[[ycoor]] : (!fir.ref<i8>) -> !fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>
122- ! CHECK: %[[ADDR :.*]] = fir.address_of(@_QQ_QMtest_dinitTtseq.DerivedInit) : !fir.ref <!fir.type<_QMtest_dinitTtseq{i:i32}>>
123- ! CHECK: %[[LOAD :.*]] = fir.load %[[ADDR]] : !fir.ref<!fir.type<_QMtest_dinitTtseq{i:i32}>>
124- ! CHECK: fir.store %[[LOAD]] to %[[y]] : !fir.ptr< !fir.type<_QMtest_dinitTtseq{i: i32}>>
122+ ! CHECK: %[[ybox :.*]] = fir.embox %[[y]] : (!fir.ptr<!fir.type<_QMtest_dinitTtseq{i:i32}>>) -> !fir.box <!fir.type<_QMtest_dinitTtseq{i:i32}>>
123+ ! CHECK: %[[yboxNone :.*]] = fir.convert %[[ybox]]
124+ ! CHECK: fir.call @_FortranAInitialize( %[[yboxNone]], %{{.*}}, %{{.*}}) {{.*}}: ( !fir.box<none>, !fir.ref<i8>, i32) -> ()
125125 equivalence (x, y)
126126 print * , y% i
127127 end subroutine
0 commit comments