@@ -18,6 +18,13 @@ struct TrivialStruct {
1818 var i: Builtin.Int32
1919}
2020
21+ @_moveOnly
22+ struct StructDeinit {
23+ var i: Builtin.Int32
24+
25+ deinit
26+ }
27+
2128@_moveOnly
2229struct SingleFieldNonTrivial {
2330 var k: Klass
@@ -69,14 +76,14 @@ bb0(%0 : @owned $Klass):
6976 return %9999 : $()
7077}
7178
72- // CHECK-LABEL: sil [ossa] @trivialStructTest : $@convention(thin) (@owned TrivialStruct ) -> () {
73- // CHECK: bb0([[ARG:%.*]] : @owned $TrivialStruct ):
74- // CHECK: [[FUNC:%.*]] = function_ref @$s4main13TrivialStructVfD :
79+ // CHECK-LABEL: sil [ossa] @structDeinitTest : $@convention(thin) (@owned StructDeinit ) -> () {
80+ // CHECK: bb0([[ARG:%.*]] : @owned $StructDeinit ):
81+ // CHECK: [[FUNC:%.*]] = function_ref @$s4main12StructDeinitVfD :
7582// CHECK: apply [[FUNC]]([[ARG]])
76- // CHECK: } // end sil function 'trivialStructTest '
77- sil [ossa] @trivialStructTest : $@convention(thin) (@owned TrivialStruct ) -> () {
78- bb0(%0 : @owned $TrivialStruct ):
79- destroy_value %0 : $TrivialStruct
83+ // CHECK: } // end sil function 'structDeinitTest '
84+ sil [ossa] @structDeinitTest : $@convention(thin) (@owned StructDeinit ) -> () {
85+ bb0(%0 : @owned $StructDeinit ):
86+ destroy_value %0 : $StructDeinit
8087 %9999 = tuple()
8188 return %9999 : $()
8289}
@@ -125,15 +132,15 @@ bb0(%0 : @owned $NonTrivialMoveOnlyEnum):
125132// Var Tests
126133//===----------------------------------------------------------------------===//
127134
128- // CHECK-LABEL: sil [ossa] @trivialStructAddrTest : $@convention(thin) (@in TrivialStruct ) -> () {
129- // CHECK: bb0([[ARG:%.*]] : $*TrivialStruct ):
130- // CHECK: [[FUNC:%.*]] = function_ref @$s4main13TrivialStructVfD :
135+ // CHECK-LABEL: sil [ossa] @trivialStructAddrTest : $@convention(thin) (@in StructDeinit ) -> () {
136+ // CHECK: bb0([[ARG:%.*]] : $*StructDeinit ):
137+ // CHECK: [[FUNC:%.*]] = function_ref @$s4main12StructDeinitVfD :
131138// CHECK: [[LOADED_VALUE:%.*]] = load [take] [[ARG]]
132139// CHECK: apply [[FUNC]]([[LOADED_VALUE]])
133140// CHECK: } // end sil function 'trivialStructAddrTest'
134- sil [ossa] @trivialStructAddrTest : $@convention(thin) (@in TrivialStruct ) -> () {
135- bb0(%0 : $*TrivialStruct ):
136- destroy_addr %0 : $*TrivialStruct
141+ sil [ossa] @trivialStructAddrTest : $@convention(thin) (@in StructDeinit ) -> () {
142+ bb0(%0 : $*StructDeinit ):
143+ destroy_addr %0 : $*StructDeinit
137144 %9999 = tuple()
138145 return %9999 : $()
139146}
@@ -216,12 +223,13 @@ bb0(%0 : $*ThreeNonTrivialNoDeinit):
216223// Destructors
217224//===----------------------------------------------------------------------===//
218225
219- sil hidden [ossa] @$s4main13TrivialStructVfD : $@convention(method) (@owned TrivialStruct) -> () {
220- bb0(%0 : @owned $TrivialStruct):
221- debug_value %0 : $TrivialStruct, let, name "self", argno 1, implicit
222- %2 = destructure_struct %0 : $TrivialStruct
223- %3 = tuple ()
224- return %3 : $()
226+ sil hidden [ossa] @$s4main12StructDeinitVfD : $@convention(method) (@owned StructDeinit) -> () {
227+ bb0(%0 : @owned $StructDeinit):
228+ debug_value %0 : $StructDeinit, let, name "self", argno 1, implicit
229+ %2 = drop_deinit %0 : $StructDeinit
230+ %3 = destructure_struct %2 : $StructDeinit
231+ %4 = tuple ()
232+ return %4 : $()
225233}
226234
227235// CHECK-LABEL: sil hidden [ossa] @$s4main21SingleFieldNonTrivialVfD : $@convention(method) (@owned SingleFieldNonTrivial) -> () {
@@ -313,40 +321,40 @@ bb6:
313321// drop_deinit Tests
314322//===----------------------------------------------------------------------===//
315323
316- // CHECK-LABEL: sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
324+ // CHECK-LABEL: sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned StructDeinit ) -> () {
317325// CHECK: %1 = drop_deinit %0
318326// CHECK-NEXT: destroy_value %1
319327// CHECK: } // end sil function 'dropDeinitOnStruct'
320- sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
321- bb0(%0 : @owned $TrivialStruct ):
322- %1 = drop_deinit %0 : $TrivialStruct
323- destroy_value %1 : $TrivialStruct
328+ sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned StructDeinit ) -> () {
329+ bb0(%0 : @owned $StructDeinit ):
330+ %1 = drop_deinit %0 : $StructDeinit
331+ destroy_value %1 : $StructDeinit
324332 %9999 = tuple()
325333 return %9999 : $()
326334}
327335
328- // CHECK-LABEL: sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
336+ // CHECK-LABEL: sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned StructDeinit ) -> () {
329337// CHECK: %1 = drop_deinit %0
330338// CHECK-NEXT: %2 = move_value %1
331339// CHECK-NEXT: destroy_value %2
332340// CHECK: } // end sil function 'dropDeinitOnMovedStruct'
333- sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
334- bb0(%0 : @owned $TrivialStruct ):
335- %1 = drop_deinit %0 : $TrivialStruct
336- %2 = move_value %1 : $TrivialStruct
337- destroy_value %2 : $TrivialStruct
341+ sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned StructDeinit ) -> () {
342+ bb0(%0 : @owned $StructDeinit ):
343+ %1 = drop_deinit %0 : $StructDeinit
344+ %2 = move_value %1 : $StructDeinit
345+ destroy_value %2 : $StructDeinit
338346 %9999 = tuple()
339347 return %9999 : $()
340348}
341349
342- // CHECK-LABEL: sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in TrivialStruct ) -> () {
350+ // CHECK-LABEL: sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in StructDeinit ) -> () {
343351// CHECK: %1 = drop_deinit %0
344352// CHECK-NEXT: destroy_addr %1
345353// CHECK: } // end sil function 'dropDeinitOnIndirectStruct'
346- sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in TrivialStruct ) -> () {
347- bb0(%0 : $*TrivialStruct ):
348- %1 = drop_deinit %0 : $*TrivialStruct
349- destroy_addr %1 : $*TrivialStruct
354+ sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in StructDeinit ) -> () {
355+ bb0(%0 : $*StructDeinit ):
356+ %1 = drop_deinit %0 : $*StructDeinit
357+ destroy_addr %1 : $*StructDeinit
350358 %9999 = tuple()
351359 return %9999 : $()
352360}
@@ -359,8 +367,8 @@ sil_moveonlydeinit Klass {
359367 @$s4main5KlassCfD
360368}
361369
362- sil_moveonlydeinit TrivialStruct {
363- @$s4main13TrivialStructVfD // TrivialStruct .deinit
370+ sil_moveonlydeinit StructDeinit {
371+ @$s4main12StructDeinitVfD // StructDeinit .deinit
364372}
365373
366374sil_moveonlydeinit SingleFieldNonTrivial {
0 commit comments