@@ -35,88 +35,3 @@ public func testClosureToFuncPtr() {
3535public func testClosureToBlockReturnNonTrivial( ) {
3636 cfuncReturnNonTrivial ( { ( ) -> NonTrivial in return NonTrivial ( ) } )
3737}
38-
39- // CHECK-LABEL: sil private [thunk] [ossa] @$s4main22testConstRefNonTrivialyyFySo0eF0VcfU_To : $@convention(c) (@in_guaranteed NonTrivial) -> () {
40- // CHECK: bb0(%[[V0:.*]] : $*NonTrivial):
41- // CHECK: %[[V1:.*]] = alloc_stack $NonTrivial
42- // CHECK: copy_addr %[[V0]] to [init] %[[V1]] : $*NonTrivial
43- // CHECK: %[[V3:.*]] = function_ref @$s4main22testConstRefNonTrivialyyFySo0eF0VcfU_ : $@convention(thin) (@in_guaranteed NonTrivial) -> ()
44- // CHECK: %[[V4:.*]] = apply %[[V3]](%[[V1]]) : $@convention(thin) (@in_guaranteed NonTrivial) -> ()
45- // CHECK: destroy_addr %[[V1]] : $*NonTrivial
46- // CHECK: dealloc_stack %[[V1]] : $*NonTrivial
47- // CHECK: return %[[V4]] : $()
48-
49- public func testConstRefNonTrivial( ) {
50- cfuncConstRefNonTrivial ( { S in } ) ;
51- }
52-
53- // CHECK-LABEL: sil private [thunk] [ossa] @$s4main19testConstRefTrivialyyFySo0E0VcfU_To : $@convention(c) (@in_guaranteed Trivial) -> () {
54- // CHECK: bb0(%[[V0:.*]] : $*Trivial):
55- // CHECK: %[[V1:.*]] = load [trivial] %[[V0]] : $*Trivial
56- // CHECK: %[[V2:.*]] = function_ref @$s4main19testConstRefTrivialyyFySo0E0VcfU_ : $@convention(thin) (Trivial) -> ()
57- // CHECK: %[[V3:.*]] = apply %[[V2]](%[[V1]]) : $@convention(thin) (Trivial) -> ()
58- // CHECK: return %[[V3]] : $()
59-
60- public func testConstRefTrivial( ) {
61- cfuncConstRefTrivial ( { S in } ) ;
62- }
63-
64- // CHECK-LABEL: sil private [thunk] [ossa] @$s4main18testConstRefStrongyyFySo9ARCStrongVcfU_To : $@convention(c) (@in_guaranteed ARCStrong) -> () {
65- // CHECK: bb0(%[[V0:.*]] : $*ARCStrong):
66- // CHECK: %[[V1:.*]] = alloc_stack $ARCStrong
67- // CHECK: copy_addr %[[V0]] to [init] %[[V1]] : $*ARCStrong
68- // CHECK: %[[V3:.*]] = load [copy] %[[V1]] : $*ARCStrong
69- // CHECK: %[[V4:.*]] = begin_borrow %[[V3]] : $ARCStrong
70- // CHECK: %[[V5:.*]] = function_ref @$s4main18testConstRefStrongyyFySo9ARCStrongVcfU_ : $@convention(thin) (@guaranteed ARCStrong) -> ()
71- // CHECK: %[[V6:.*]] = apply %[[V5]](%[[V4]]) : $@convention(thin) (@guaranteed ARCStrong) -> ()
72- // CHECK: end_borrow %[[V4]] : $ARCStrong
73- // CHECK: destroy_value %[[V3]] : $ARCStrong
74- // CHECK: destroy_addr %[[V1]] : $*ARCStrong
75- // CHECK: dealloc_stack %[[V1]] : $*ARCStrong
76- // CHECK: return %[[V6]] : $()
77-
78- public func testConstRefStrong( ) {
79- cfuncConstRefStrong ( { S in } ) ;
80- }
81-
82- // CHECK-LABEL: sil shared [transparent] [serialized] [reabstraction_thunk] [ossa] @$sSo10NonTrivialVIegn_ABIeyBn_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed (@in_guaranteed NonTrivial) -> (), @in_guaranteed NonTrivial) -> () {
83- // CHECK: bb0(%[[V0:.*]] : $*@block_storage @callee_guaranteed (@in_guaranteed NonTrivial) -> (), %[[V1:.*]] : $*NonTrivial):
84- // CHECK: %[[V2:.*]] = project_block_storage %[[V0]] : $*@block_storage @callee_guaranteed (@in_guaranteed NonTrivial) -> ()
85- // CHECK: %[[V3:.*]] = load [copy] %[[V2]] : $*@callee_guaranteed (@in_guaranteed NonTrivial) -> ()
86- // CHECK: %[[V4:.*]] = begin_borrow %[[V3]] : $@callee_guaranteed (@in_guaranteed NonTrivial) -> ()
87- // CHECK: apply %[[V4]](%[[V1]]) : $@callee_guaranteed (@in_guaranteed NonTrivial) -> ()
88- // CHECK: end_borrow %[[V4]] : $@callee_guaranteed (@in_guaranteed NonTrivial) -> ()
89- // CHECK: destroy_value %[[V3]] : $@callee_guaranteed (@in_guaranteed NonTrivial) -> ()
90-
91- public func testBlockConstRefNonTrivial( ) {
92- blockConstRefNonTrivial ( { S in } ) ;
93- }
94-
95- // CHECK-LABEL: sil shared [transparent] [serialized] [reabstraction_thunk] [ossa] @$sSo7TrivialVIegy_ABIeyBn_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed (Trivial) -> (), @in_guaranteed Trivial) -> () {
96- // CHECK: bb0(%[[V0:.*]] : $*@block_storage @callee_guaranteed (Trivial) -> (), %[[V1:.*]] : $*Trivial):
97- // CHECK: %[[V2:.*]] = project_block_storage %[[V0]] : $*@block_storage @callee_guaranteed (Trivial) -> ()
98- // CHECK: %[[V3:.*]] = load [copy] %[[V2]] : $*@callee_guaranteed (Trivial) -> ()
99- // CHECK: %[[V4:.*]] = load [trivial] %[[V1]] : $*Trivial
100- // CHECK: %[[V5:.*]] = begin_borrow %[[V3]] : $@callee_guaranteed (Trivial) -> ()
101- // CHECK: apply %[[V5]](%[[V4]]) : $@callee_guaranteed (Trivial) -> ()
102- // CHECK: end_borrow %[[V5]] : $@callee_guaranteed (Trivial) -> ()
103- // CHECK: destroy_value %[[V3]] : $@callee_guaranteed (Trivial) -> ()
104-
105- public func testBlockConstRefTrivial( ) {
106- blockConstRefTrivial ( { S in } ) ;
107- }
108-
109- // CHECK-LABEL: sil shared [transparent] [serialized] [reabstraction_thunk] [ossa] @$sSo9ARCStrongVIegg_ABIeyBn_TR : $@convention(c) (@inout_aliasable @block_storage @callee_guaranteed (@guaranteed ARCStrong) -> (), @in_guaranteed ARCStrong) -> () {
110- // CHECK: bb0(%[[V0:.*]] : $*@block_storage @callee_guaranteed (@guaranteed ARCStrong) -> (), %[[V1:.*]] : $*ARCStrong):
111- // CHECK: %[[V2:.*]] = project_block_storage %[[V0]] : $*@block_storage @callee_guaranteed (@guaranteed ARCStrong) -> ()
112- // CHECK: %[[V3:.*]] = load [copy] %[[V2]] : $*@callee_guaranteed (@guaranteed ARCStrong) -> ()
113- // CHECK: %[[V4:.*]] = load_borrow %[[V1]] : $*ARCStrong
114- // CHECK: %[[V5:.*]] = begin_borrow %[[V3]] : $@callee_guaranteed (@guaranteed ARCStrong) -> ()
115- // CHECK: apply %[[V5]](%[[V4]]) : $@callee_guaranteed (@guaranteed ARCStrong) -> ()
116- // CHECK: end_borrow %[[V5]] : $@callee_guaranteed (@guaranteed ARCStrong) -> ()
117- // CHECK: end_borrow %[[V4]] : $ARCStrong
118- // CHECK: destroy_value %[[V3]] : $@callee_guaranteed (@guaranteed ARCStrong) -> ()
119-
120- public func testBlockConstRefStrong( ) {
121- blockConstRefStrong ( { S in } ) ;
122- }
0 commit comments