1
- // RUN: %target-swift-frontend -sdk %S/Inputs -I %S/Inputs -enable-source-import %s -emit-silgen | %FileCheck %s
1
+ // RUN: %target-swift-frontend -sdk %S/Inputs -I %S/Inputs -enable-source-import %s -emit-silgen -enable-sil-ownership | %FileCheck %s
2
2
3
3
// REQUIRES: objc_interop
4
4
@@ -18,7 +18,7 @@ class SwiftGizmo : Gizmo {
18
18
// CHECK-NEXT: return [[RESULT]] : $X
19
19
20
20
// CHECK-LABEL: sil hidden @_T012objc_dealloc10SwiftGizmoC{{[_0-9a-zA-Z]*}}fc
21
- // CHECK: bb0([[SELF_PARAM:%[0-9]+]] : $SwiftGizmo):
21
+ // CHECK: bb0([[SELF_PARAM:%[0-9]+]] : @owned $SwiftGizmo):
22
22
override init ( ) {
23
23
// CHECK: [[SELF_BOX:%.*]] = alloc_box ${ var SwiftGizmo }, let, name "self"
24
24
// CHECK: [[SELF_UNINIT:%.*]] = mark_uninitialized [derivedselfonly] [[SELF_BOX]] : ${ var SwiftGizmo }
@@ -36,7 +36,7 @@ class SwiftGizmo : Gizmo {
36
36
37
37
// CHECK-LABEL: sil hidden @_T012objc_dealloc10SwiftGizmoCfD : $@convention(method) (@owned SwiftGizmo) -> ()
38
38
deinit {
39
- // CHECK: bb0([[SELF:%[0-9]+]] : $SwiftGizmo):
39
+ // CHECK: bb0([[SELF:%[0-9]+]] : @owned $SwiftGizmo):
40
40
// Call onDestruct()
41
41
// CHECK: [[ONDESTRUCT_REF:%[0-9]+]] = function_ref @_T012objc_dealloc10onDestructyyF : $@convention(thin) () -> ()
42
42
// CHECK: [[ONDESTRUCT_RESULT:%[0-9]+]] = apply [[ONDESTRUCT_REF]]() : $@convention(thin) () -> ()
@@ -56,7 +56,7 @@ class SwiftGizmo : Gizmo {
56
56
57
57
// Objective-C deallocation deinit thunk (i.e., -dealloc).
58
58
// CHECK-LABEL: sil hidden [thunk] @_T012objc_dealloc10SwiftGizmoCfDTo : $@convention(objc_method) (SwiftGizmo) -> ()
59
- // CHECK: bb0([[SELF:%[0-9]+]] : $SwiftGizmo):
59
+ // CHECK: bb0([[SELF:%[0-9]+]] : @unowned $SwiftGizmo):
60
60
// CHECK: [[SELF_COPY:%.*]] = copy_value [[SELF]]
61
61
62
62
// CHECK: [[GIZMO_DTOR:%[0-9]+]] = function_ref @_T012objc_dealloc10SwiftGizmoCfD : $@convention(method) (@owned SwiftGizmo) -> ()
@@ -65,7 +65,7 @@ class SwiftGizmo : Gizmo {
65
65
66
66
// Objective-C IVar initializer (i.e., -.cxx_construct)
67
67
// CHECK-LABEL: sil hidden @_T012objc_dealloc10SwiftGizmoCfeTo : $@convention(objc_method) (@owned SwiftGizmo) -> @owned SwiftGizmo
68
- // CHECK: bb0([[SELF_PARAM:%[0-9]+]] : $SwiftGizmo):
68
+ // CHECK: bb0([[SELF_PARAM:%[0-9]+]] : @owned $SwiftGizmo):
69
69
// CHECK-NEXT: debug_value [[SELF_PARAM]] : $SwiftGizmo, let, name "self"
70
70
// CHECK-NEXT: [[SELF:%[0-9]+]] = mark_uninitialized [rootself] [[SELF_PARAM]] : $SwiftGizmo
71
71
// CHECK: [[XINIT:%[0-9]+]] = function_ref @_T012objc_dealloc10SwiftGizmoC1xAA1XCvfi
@@ -80,10 +80,12 @@ class SwiftGizmo : Gizmo {
80
80
81
81
// Objective-C IVar destroyer (i.e., -.cxx_destruct)
82
82
// CHECK-LABEL: sil hidden @_T012objc_dealloc10SwiftGizmoCfETo : $@convention(objc_method) (SwiftGizmo) -> ()
83
- // CHECK: bb0([[SELF:%[0-9]+]] : $SwiftGizmo):
84
- // CHECK-NEXT: debug_value [[SELF]] : $SwiftGizmo, let, name "self"
85
- // CHECK-NEXT: [[X:%[0-9]+]] = ref_element_addr [[SELF]] : $SwiftGizmo, #SwiftGizmo.x
83
+ // CHECK: bb0([[SELF:%[0-9]+]] : @unowned $SwiftGizmo):
84
+ // CHECK-NEXT: debug_value [[SELF]] : $SwiftGizmo, let, name "self"
85
+ // CHECK-NEXT: [[SELF_BORROW:%.*]] = begin_borrow [[SELF]]
86
+ // CHECK-NEXT: [[X:%[0-9]+]] = ref_element_addr [[SELF_BORROW]] : $SwiftGizmo, #SwiftGizmo.x
86
87
// CHECK-NEXT: destroy_addr [[X]] : $*X
88
+ // CHECK-NEXT: end_borrow [[SELF_BORROW]] from [[SELF]]
87
89
// CHECK-NEXT: [[RESULT:%[0-9]+]] = tuple ()
88
90
// CHECK-NEXT: return [[RESULT]] : $()
89
91
}
0 commit comments