@@ -197,28 +197,20 @@ class C {}
197
197
class D { }
198
198
199
199
// CHECK-LABEL: sil hidden @_T08builtins22class_to_native_object{{[_0-9a-zA-Z]*}}F
200
- // CHECK: bb0([[ARG:%.*]] : $C):
201
- // CHECK-NEXT: debug_value
202
- // CHECK-NEXT: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
203
- // CHECK-NEXT: [[COPY_BORROWED_ARG:%.*]] = copy_value [[BORROWED_ARG]]
204
- // CHECK-NEXT: [[OBJ:%.*]] = unchecked_ref_cast [[COPY_BORROWED_ARG:%.*]] to $Builtin.NativeObject
205
- // CHECK-NEXT: end_borrow [[BORROWED_ARG]] from [[ARG]]
206
- // CHECK-NEXT: destroy_value [[ARG]]
207
- // CHECK-NEXT: return [[OBJ]]
208
200
func class_to_native_object( _ c: C ) -> Builtin . NativeObject {
201
+ // CHECK: [[OBJ:%.*]] = unchecked_ref_cast [[C:%.*]] to $Builtin.NativeObject
202
+ // CHECK-NOT: destroy_value [[C]]
203
+ // CHECK-NOT: destroy_value [[OBJ]]
204
+ // CHECK: return [[OBJ]]
209
205
return Builtin . castToNativeObject ( c)
210
206
}
211
207
212
208
// CHECK-LABEL: sil hidden @_T08builtins23class_to_unknown_object{{[_0-9a-zA-Z]*}}F
213
- // CHECK: bb0([[ARG:%.*]] : $C):
214
- // CHECK-NEXT: debug_value
215
- // CHECK-NEXT: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
216
- // CHECK-NEXT: [[COPY_BORROWED_ARG:%.*]] = copy_value [[BORROWED_ARG]]
217
- // CHECK-NEXT: [[OBJ:%.*]] = unchecked_ref_cast [[COPY_BORROWED_ARG:%.*]] to $Builtin.UnknownObject
218
- // CHECK-NEXT: end_borrow [[BORROWED_ARG]] from [[ARG]]
219
- // CHECK-NEXT: destroy_value [[ARG]]
220
- // CHECK-NEXT: return [[OBJ]]
221
209
func class_to_unknown_object( _ c: C ) -> Builtin . UnknownObject {
210
+ // CHECK: [[OBJ:%.*]] = unchecked_ref_cast [[C:%.*]] to $Builtin.UnknownObject
211
+ // CHECK-NOT: destroy_value [[C]]
212
+ // CHECK-NOT: destroy_value [[OBJ]]
213
+ // CHECK: return [[OBJ]]
222
214
return Builtin . castToUnknownObject ( c)
223
215
}
224
216
@@ -241,16 +233,9 @@ func class_archetype_to_unknown_object<T : C>(_ t: T) -> Builtin.UnknownObject {
241
233
}
242
234
243
235
// CHECK-LABEL: sil hidden @_T08builtins34class_existential_to_native_object{{[_0-9a-zA-Z]*}}F
244
- // CHECK: bb0([[ARG:%.*]] : $ClassProto):
245
- // CHECK-NEXT: debug_value
246
- // CHECK-NEXT: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
247
- // CHECK-NEXT: [[COPY_BORROWED_ARG:%.*]] = copy_value [[BORROWED_ARG]]
248
- // CHECK-NEXT: [[REF:%[0-9]+]] = open_existential_ref [[COPY_BORROWED_ARG]] : $ClassProto
249
- // CHECK-NEXT: [[PTR:%[0-9]+]] = unchecked_ref_cast [[REF]] : $@opened({{.*}}) ClassProto to $Builtin.NativeObject
250
- // CHECK-NEXT: end_borrow [[BORROWED_ARG]] from [[ARG]]
251
- // CHECK-NEXT: destroy_value [[ARG]]
252
- // CHECK-NEXT: return [[PTR]]
253
236
func class_existential_to_native_object( _ t: ClassProto ) -> Builtin . NativeObject {
237
+ // CHECK: [[REF:%[0-9]+]] = open_existential_ref [[T:%[0-9]+]] : $ClassProto
238
+ // CHECK: [[PTR:%[0-9]+]] = unchecked_ref_cast [[REF]] : $@opened({{.*}}) ClassProto to $Builtin.NativeObject
254
239
return Builtin . castToNativeObject ( t)
255
240
}
256
241
0 commit comments