|
1 | 1 | // RUN: %target-swift-frontend -emit-sil -disable-objc-attr-requires-foundation-module %s | %FileCheck %s
|
2 | 2 |
|
3 | 3 | // REQUIRES: objc_interop
|
4 |
| -// REQUIRES: rdar49942212 |
5 | 4 |
|
6 | 5 | import ObjectiveC
|
7 | 6 |
|
@@ -98,52 +97,46 @@ class Cat : FakeNSObject {
|
98 | 97 | // CHECK-NEXT: cond_br [[COND]], bb1, bb2
|
99 | 98 |
|
100 | 99 | // CHECK: bb1:
|
101 |
| - // CHECK-NEXT: br bb8 |
102 |
| - |
103 |
| - // CHECK: bb3: |
104 |
| - // CHECK: br bb5 |
105 |
| - |
106 |
| - // CHECK: bb4: |
107 |
| - // CHECK: br bb5 |
108 |
| - |
109 |
| - // CHECK: bb5 |
| 100 | + // CHECK-NEXT: br [[ERROR_BRANCH:bb[0-9]+]] |
| 101 | + |
| 102 | + // CHECK: bb{{[0-9]+}}: |
110 | 103 | // CHECK: [[SELF_INIT:%.+]] = objc_method %2 : $Cat, #Cat.init!initializer.1.foreign : (Cat.Type) -> (Int, Bool) -> Cat?
|
111 |
| - // CHECK: [[NEW_OPT_SELF:%.+]] = apply [[SELF_INIT]]({{%.+}}, {{%.+}}, %2) : $@convention(objc_method) (Int, ObjCBool, @owned Cat) -> @owned Optional<Cat> |
| 104 | + // CHECK: [[NEW_OPT_SELF:%.+]] = apply [[SELF_INIT]]({{%.+}}, {{%.+}}, {{%.+}}) : $@convention(objc_method) (Int, ObjCBool, @owned Cat) -> @owned Optional<Cat> |
112 | 105 | // CHECK: [[COND:%.+]] = select_enum [[NEW_OPT_SELF]] : $Optional<Cat>
|
113 |
| - // CHECK-NEXT: cond_br [[COND]], bb7, bb6 |
| 106 | + // CHECK-NEXT: cond_br [[COND]], [[SUCCESS_BRANCH:bb[0-9]+]], [[RELEASE_THEN_ERROR_BRANCH:bb[0-9]+]] |
114 | 107 |
|
115 |
| - // CHECK: bb6: |
| 108 | + // CHECK: [[RELEASE_THEN_ERROR_BRANCH]]: |
116 | 109 | // CHECK-NEXT: release_value [[NEW_OPT_SELF]]
|
117 |
| - // CHECK-NEXT: br bb8 |
| 110 | + // CHECK-NEXT: br [[ERROR_BRANCH]] |
118 | 111 |
|
119 |
| - // CHECK: bb7: |
| 112 | + // CHECK: [[SUCCESS_BRANCH]]: |
120 | 113 | // CHECK-NEXT: [[NEW_SELF:%.+]] = unchecked_enum_data [[NEW_OPT_SELF]] : $Optional<Cat>, #Optional.some!enumelt.1
|
121 | 114 | // CHECK-NEXT: store [[NEW_SELF]] to [[SELF_BOX]] : $*Cat
|
122 | 115 | // TODO: Once we re-enable arbitrary take promotion, this retain and the associated destroy_addr will go away.
|
123 | 116 | // CHECK-NEXT: strong_retain [[NEW_SELF]]
|
124 | 117 | // CHECK-NEXT: [[RESULT:%.+]] = enum $Optional<Cat>, #Optional.some!enumelt.1, [[NEW_SELF]] : $Cat
|
125 | 118 | // CHECK-NEXT: destroy_addr [[SELF_BOX]]
|
126 | 119 | // CHECK-NEXT: dealloc_stack [[SELF_BOX]] : $*Cat
|
127 |
| - // CHECK-NEXT: br bb12([[RESULT]] : $Optional<Cat>) |
| 120 | + // CHECK-NEXT: br [[RESULT_BRANCH:bb[0-9]+]]([[RESULT]] : $Optional<Cat>) |
128 | 121 |
|
129 |
| - // CHECK: bb8: |
| 122 | + // CHECK: [[ERROR_BRANCH]]: |
130 | 123 | // CHECK-NEXT: [[COND:%.+]] = load [[HAS_RUN_INIT_BOX]] : $*Builtin.Int1
|
131 |
| - // CHECK-NEXT: cond_br [[COND]], bb9, bb10 |
| 124 | + // CHECK-NEXT: cond_br [[COND]], [[ERROR_WITHOUT_DESTROY_BRANCH:bb[0-9]+]], [[ERROR_WITH_DESTROY_BRANCH:bb[0-9]+]] |
132 | 125 |
|
133 |
| - // CHECK: bb9: |
134 |
| - // CHECK-NEXT: br bb11 |
| 126 | + // CHECK: [[ERROR_WITHOUT_DESTROY_BRANCH]]: |
| 127 | + // CHECK-NEXT: br [[ERROR_CLEANUP_BRANCH:bb[0-9]+]] |
135 | 128 |
|
136 |
| - // CHECK: bb10: |
| 129 | + // CHECK: [[ERROR_WITH_DESTROY_BRANCH]]: |
137 | 130 | // CHECK-NEXT: [[MOST_DERIVED_TYPE:%.+]] = value_metatype $@thick Cat.Type, %2 : $Cat
|
138 | 131 | // CHECK-NEXT: dealloc_partial_ref %2 : $Cat, [[MOST_DERIVED_TYPE]] : $@thick Cat.Type
|
139 |
| - // CHECK-NEXT: br bb11 |
| 132 | + // CHECK-NEXT: br [[ERROR_CLEANUP_BRANCH]] |
140 | 133 |
|
141 |
| - // CHECK: bb11: |
| 134 | + // CHECK: [[ERROR_CLEANUP_BRANCH]]: |
142 | 135 | // CHECK-NEXT: dealloc_stack [[SELF_BOX]] : $*Cat
|
143 | 136 | // CHECK-NEXT: [[NIL_RESULT:%.+]] = enum $Optional<Cat>, #Optional.none!enumelt
|
144 |
| - // CHECK-NEXT: br bb12([[NIL_RESULT]] : $Optional<Cat>) |
| 137 | + // CHECK-NEXT: br [[RESULT_BRANCH]]([[NIL_RESULT]] : $Optional<Cat>) |
145 | 138 |
|
146 |
| - // CHECK: bb12([[RESULT:%.+]] : $Optional<Cat>): |
| 139 | + // CHECK: [[RESULT_BRANCH]]([[RESULT:%.+]] : $Optional<Cat>): |
147 | 140 | // CHECK-NEXT: dealloc_stack [[HAS_RUN_INIT_BOX]] : $*Builtin.Int1
|
148 | 141 | // CHECK-NEXT: return [[RESULT]] : $Optional<Cat>
|
149 | 142 |
|
|
0 commit comments