@@ -309,6 +309,48 @@ bb6:
309309 return %14 : $()
310310}
311311
312+ //===----------------------------------------------------------------------===//
313+ // drop_deinit Tests
314+ //===----------------------------------------------------------------------===//
315+
316+ // CHECK-LABEL: sil [ossa] @dropDeinitOnStruct : $@convention(thin) (@owned TrivialStruct) -> () {
317+ // CHECK: %1 = drop_deinit %0
318+ // CHECK-NEXT: destroy_value %1
319+ // 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
324+ %9999 = tuple()
325+ return %9999 : $()
326+ }
327+
328+ // CHECK-LABEL: sil [ossa] @dropDeinitOnMovedStruct : $@convention(thin) (@owned TrivialStruct) -> () {
329+ // CHECK: %1 = drop_deinit %0
330+ // CHECK-NEXT: %2 = move_value %1
331+ // CHECK-NEXT: destroy_value %2
332+ // 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
338+ %9999 = tuple()
339+ return %9999 : $()
340+ }
341+
342+ // CHECK-LABEL: sil [ossa] @dropDeinitOnIndirectStruct : $@convention(thin) (@in TrivialStruct) -> () {
343+ // CHECK: %1 = drop_deinit %0
344+ // CHECK-NEXT: destroy_addr %1
345+ // 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
350+ %9999 = tuple()
351+ return %9999 : $()
352+ }
353+
312354sil @$s4main5KlassCfD : $@convention(method) (@owned Klass) -> ()
313355sil @$s4main5KlassCACycfc : $@convention(method) (@owned Klass) -> @owned Klass
314356sil @$s4main5KlassCfd : $@convention(method) (@guaranteed Klass) -> @owned Builtin.NativeObject
0 commit comments