@@ -327,10 +327,11 @@ class SwiftIdLover : NSObject, Anyable {
327
327
// CHECK: bb0(%0 : $AnyObject, %1 : $SwiftIdLover):
328
328
// CHECK-NEXT: strong_retain %0
329
329
// CHECK-NEXT: strong_retain %1
330
- // CHECK-NEXT: [[OPENED:%.*]] = open_existential_ref %0
330
+ // CHECK-NEXT: [[OPTIONAL:%.*]] = unchecked_ref_cast %0
331
+ // CHECK-NEXT: // function_ref
332
+ // CHECK-NEXT: [[BRIDGE_TO_ANY:%.*]] = function_ref [[BRIDGE_TO_ANY_FUNC:@.*]] :
331
333
// CHECK-NEXT: [[RESULT:%.*]] = alloc_stack $Any
332
- // CHECK-NEXT: [[RESULT_VAL:%.*]] = init_existential_addr [[RESULT]]
333
- // CHECK-NEXT: store [[OPENED]] to [[RESULT_VAL]]
334
+ // CHECK-NEXT: [[RESULT_VAL:%.*]] = apply [[BRIDGE_TO_ANY]]([[RESULT]], [[OPTIONAL]])
334
335
// CHECK-NEXT: // function_ref
335
336
// CHECK-NEXT: [[METHOD:%.*]] = function_ref @_TFC17objc_bridging_any12SwiftIdLover15methodTakingAnyfT1aP__T_
336
337
// CHECK-NEXT: apply [[METHOD]]([[RESULT]], %1)
@@ -342,7 +343,7 @@ class SwiftIdLover : NSObject, Anyable {
342
343
// CHECK-LABEL: sil hidden @_TFC17objc_bridging_any12SwiftIdLover23methodTakingOptionalAny
343
344
344
345
// CHECK-LABEL: sil hidden [thunk] @_TToFC17objc_bridging_any12SwiftIdLover23methodTakingOptionalAny
345
- // CHECK: init_existential_addr %11 : $*Any, $@opened({{.*}}) AnyObject
346
+ // CHECK: function_ref [[BRIDGE_TO_ANY_FUNC]]
346
347
347
348
// CHECK-LABEL: sil hidden @_TFC17objc_bridging_any12SwiftIdLover26methodTakingBlockTakingAnyfFP_T_T_ : $@convention(method) (@owned @callee_owned (@in Any) -> (), @guaranteed SwiftIdLover) -> ()
348
349
@@ -396,10 +397,11 @@ class SwiftIdLover : NSObject, Anyable {
396
397
// CHECK-NEXT: [[FUNCTION:%.*]] = load [[BLOCK_STORAGE_ADDR]]
397
398
// CHECK-NEXT: strong_retain [[FUNCTION]]
398
399
// CHECK-NEXT: strong_retain %1
399
- // CHECK-NEXT: [[OPENED:%.*]] = open_existential_ref %1
400
+ // CHECK-NEXT: [[OPTIONAL:%.*]] = unchecked_ref_cast %1
401
+ // CHECK-NEXT: // function_ref
402
+ // CHECK-NEXT: [[BRIDGE_TO_ANY:%.*]] = function_ref [[BRIDGE_TO_ANY_FUNC:@.*]] :
400
403
// CHECK-NEXT: [[RESULT:%.*]] = alloc_stack $Any
401
- // CHECK-NEXT: [[RESULT_VAL:%.*]] = init_existential_addr [[RESULT]] : $*Any
402
- // CHECK-NEXT: store [[OPENED]] to [[RESULT_VAL]]
404
+ // CHECK-NEXT: [[RESULT_VAL:%.*]] = apply [[BRIDGE_TO_ANY]]([[RESULT]], [[OPTIONAL]])
403
405
// CHECK-NEXT: apply [[FUNCTION]]([[RESULT]])
404
406
// CHECK-NEXT: [[VOID:%.*]] = tuple ()
405
407
// CHECK-NEXT: dealloc_stack [[RESULT]]
@@ -425,10 +427,11 @@ class SwiftIdLover : NSObject, Anyable {
425
427
// CHECK-LABEL: sil shared [transparent] [reabstraction_thunk] @_TTRXFdCb__aPs9AnyObject__XFo__iP__ : $@convention(thin) (@owned @convention(block) () -> @autoreleased AnyObject) -> @out Any
426
428
// CHECK: bb0(%0 : $*Any, %1 : $@convention(block) () -> @autoreleased AnyObject):
427
429
// CHECK-NEXT: [[BRIDGED:%.*]] = apply %1()
428
- // CHECK-NEXT: [[OPENED:%.*]] = open_existential_ref [[BRIDGED]]
430
+ // CHECK-NEXT: [[OPTIONAL:%.*]] = unchecked_ref_cast [[BRIDGED]]
431
+ // CHECK-NEXT: // function_ref
432
+ // CHECK-NEXT: [[BRIDGE_TO_ANY:%.*]] = function_ref [[BRIDGE_TO_ANY_FUNC:@.*]] :
429
433
// CHECK-NEXT: [[RESULT:%.*]] = alloc_stack $Any
430
- // CHECK-NEXT: [[RESULT_VAL:%.*]] = init_existential_addr [[RESULT]]
431
- // CHECK-NEXT: store [[OPENED]] to [[RESULT_VAL]]
434
+ // CHECK-NEXT: [[RESULT_VAL:%.*]] = apply [[BRIDGE_TO_ANY]]([[RESULT]], [[OPTIONAL]])
432
435
433
436
// TODO: Should elide the copy
434
437
// CHECK-NEXT: copy_addr [take] [[RESULT]] to [initialization] %0
0 commit comments