@@ -489,10 +489,9 @@ func s210______compErasure(_ x: Foo & Error) -> Error {
489
489
// CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s220_____openExistBoxSSs5Error_pF : $@convention(thin) (@owned Error) -> @owned String {
490
490
// CHECK: bb0([[ARG:%.*]] : $Error):
491
491
// CHECK: [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
492
- // CHECK: [[OPAQUE_ARG:%.*]] = open_existential_box [[BORROWED_ARG]] : $Error to $*@opened({{.*}}) Error
493
- // CHECK: [[LOAD_ALLOC:%.*]] = load [copy] [[OPAQUE_ARG]]
492
+ // CHECK: [[OPAQUE_ARG:%.*]] = open_existential_box_value [[BORROWED_ARG]] : $Error to $@opened({{.*}}) Error
494
493
// CHECK: [[ALLOC_OPEN:%.*]] = alloc_stack $@opened({{.*}}) Error
495
- // CHECK: store [[LOAD_ALLOC ]] to [init] [[ALLOC_OPEN]]
494
+ // CHECK: store_borrow [[OPAQUE_ARG ]] to [[ALLOC_OPEN]]
496
495
// CHECK: dealloc_stack [[ALLOC_OPEN]]
497
496
// CHECK: end_borrow [[BORROWED_ARG]] from [[ARG]]
498
497
// CHECK: destroy_value [[ARG]] : $Error
@@ -1003,6 +1002,21 @@ func s470________nativeToC(fromAny any: Any) -> AnyObject {
1003
1002
}
1004
1003
#endif
1005
1004
1005
+ // Test emitOpenExistential
1006
+ // ---
1007
+ // CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s480_________getErroryps0F0_p04someF0_tF : $@convention(thin) (@owned Error) -> @out Any {
1008
+ // CHECK: bb0(%0 : $Error):
1009
+ // CHECK: [[BORROW:%.*]] = begin_borrow %0 : $Error
1010
+ // CHECK: [[VAL:%.*]] = open_existential_box_value [[BORROW]] : $Error to $@opened("{{.*}}") Error
1011
+ // CHECK: [[COPY:%.*]] = copy_value [[VAL]] : $@opened("{{.*}}") Error
1012
+ // CHECK: [[ANY:%.*]] = init_existential_value [[COPY]] : $@opened("{{.*}}") Error, $@opened("{{.*}}") Error, $Any
1013
+ // CHECK: destroy_value %0 : $Error
1014
+ // CHECK: return [[ANY]] : $Any
1015
+ // CHECK-LABEL: } // end sil function '_T020opaque_values_silgen21s480_________getErroryps0F0_p04someF0_tF'
1016
+ func s480_________getError( someError: Error ) -> Any {
1017
+ return someError
1018
+ }
1019
+
1006
1020
// Tests conditional value casts and correspondingly generated reabstraction thunk, with <T> types
1007
1021
// ---
1008
1022
// CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s999_____condTFromAnyyyp_xtlF : $@convention(thin) <T> (@in Any, @in T) -> () {
0 commit comments