@@ -18,6 +18,13 @@ struct TrivialStruct {
18
18
var i: Builtin.Int32
19
19
}
20
20
21
+ @_moveOnly
22
+ struct StructDeinit {
23
+ var i: Builtin.Int32
24
+
25
+ deinit
26
+ }
27
+
21
28
@_moveOnly
22
29
struct SingleFieldNonTrivial {
23
30
var k: Klass
@@ -69,14 +76,14 @@ bb0(%0 : @owned $Klass):
69
76
return %9999 : $()
70
77
}
71
78
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 :
75
82
// 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
80
87
%9999 = tuple()
81
88
return %9999 : $()
82
89
}
@@ -125,15 +132,15 @@ bb0(%0 : @owned $NonTrivialMoveOnlyEnum):
125
132
// Var Tests
126
133
//===----------------------------------------------------------------------===//
127
134
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 :
131
138
// CHECK: [[LOADED_VALUE:%.*]] = load [take] [[ARG]]
132
139
// CHECK: apply [[FUNC]]([[LOADED_VALUE]])
133
140
// 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
137
144
%9999 = tuple()
138
145
return %9999 : $()
139
146
}
@@ -216,12 +223,13 @@ bb0(%0 : $*ThreeNonTrivialNoDeinit):
216
223
// Destructors
217
224
//===----------------------------------------------------------------------===//
218
225
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 : $()
225
233
}
226
234
227
235
// CHECK-LABEL: sil hidden [ossa] @$s4main21SingleFieldNonTrivialVfD : $@convention(method) (@owned SingleFieldNonTrivial) -> () {
@@ -313,40 +321,40 @@ bb6:
313
321
// drop_deinit Tests
314
322
//===----------------------------------------------------------------------===//
315
323
316
- // CHECK-LABEL: sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
324
+ // CHECK-LABEL: sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned StructDeinit ) -> () {
317
325
// CHECK: %1 = drop_deinit %0
318
326
// CHECK-NEXT: destroy_value %1
319
327
// 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
324
332
%9999 = tuple()
325
333
return %9999 : $()
326
334
}
327
335
328
- // CHECK-LABEL: sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned TrivialStruct ) -> () {
336
+ // CHECK-LABEL: sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned StructDeinit ) -> () {
329
337
// CHECK: %1 = drop_deinit %0
330
338
// CHECK-NEXT: %2 = move_value %1
331
339
// CHECK-NEXT: destroy_value %2
332
340
// 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
338
346
%9999 = tuple()
339
347
return %9999 : $()
340
348
}
341
349
342
- // CHECK-LABEL: sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in TrivialStruct ) -> () {
350
+ // CHECK-LABEL: sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in StructDeinit ) -> () {
343
351
// CHECK: %1 = drop_deinit %0
344
352
// CHECK-NEXT: destroy_addr %1
345
353
// 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
350
358
%9999 = tuple()
351
359
return %9999 : $()
352
360
}
@@ -359,8 +367,8 @@ sil_moveonlydeinit Klass {
359
367
@$s4main5KlassCfD
360
368
}
361
369
362
- sil_moveonlydeinit TrivialStruct {
363
- @$s4main13TrivialStructVfD // TrivialStruct .deinit
370
+ sil_moveonlydeinit StructDeinit {
371
+ @$s4main12StructDeinitVfD // StructDeinit .deinit
364
372
}
365
373
366
374
sil_moveonlydeinit SingleFieldNonTrivial {
0 commit comments