@@ -1331,15 +1331,15 @@ bb(%0 : $*Array<X>, %1 : $@callee_owned (@inout X) -> (@out (), @error Error)):
13311331 return %r : $()
13321332}
13331333
1334- // CHECK-LABEL: CG of arraysemantics_createUninitialized
1334+ // CHECK-LABEL: CG of arraysemantics_createUninitialized1
13351335// CHECK-NEXT: Arg [ref] %0 Esc: A, Succ:
13361336// CHECK-NEXT: Val [ref] %2 Esc: , Succ: (%6)
13371337// CHECK-NEXT: Val [ref] %5 Esc: , Succ: %2
13381338// CHECK-NEXT: Con [int] %6 Esc: R, Succ: (%6.1)
13391339// CHECK-NEXT: Con %6.1 Esc: R, Succ: %0
13401340// CHECK-NEXT: Ret [ref] return Esc: , Succ: %5
13411341// CHECK-NEXT: End
1342- sil @arraysemantics_createUninitialized : $@convention(thin) (@owned X) -> @owned Array<X> {
1342+ sil @arraysemantics_createUninitialized1 : $@convention(thin) (@owned X) -> @owned Array<X> {
13431343bb0(%0 : $X):
13441344 %1 = function_ref @swift_bufferAllocate : $@convention(thin) () -> @owned AnyObject
13451345 %2 = apply %1() : $@convention(thin) () -> @owned AnyObject
@@ -1353,6 +1353,27 @@ bb0(%0 : $X):
13531353 return %5 : $Array<X>
13541354}
13551355
1356+ // CHECK-LABEL: CG of arraysemantics_createUninitialized2
1357+ // CHECK-NEXT: Arg [ref] %0 Esc: A, Succ:
1358+ // CHECK-NEXT: Val [ref] %2 Esc: , Succ: (%6)
1359+ // CHECK-NEXT: Val [ref] %5 Esc: , Succ: %2
1360+ // CHECK-NEXT: Con [int] %6 Esc: R, Succ: (%6.1)
1361+ // CHECK-NEXT: Con %6.1 Esc: R, Succ: %0
1362+ // CHECK-NEXT: Ret [ref] return Esc: , Succ: %5
1363+ // CHECK-NEXT: End
1364+ sil [ossa] @arraysemantics_createUninitialized2 : $@convention(thin) (@owned X) -> @owned Array<X> {
1365+ bb0(%0 : @owned $X):
1366+ %1 = function_ref @swift_bufferAllocate : $@convention(thin) () -> @owned AnyObject
1367+ %2 = apply %1() : $@convention(thin) () -> @owned AnyObject
1368+ %3 = function_ref @createUninitialized : $@convention(method) (@owned AnyObject) -> (@owned Array<X>, UnsafeMutablePointer<X>)
1369+ %4 = apply %3(%2) : $@convention(method) (@owned AnyObject) -> (@owned Array<X>, UnsafeMutablePointer<X>)
1370+ (%5, %6) = destructure_tuple %4 : $(Array<X>, UnsafeMutablePointer<X>)
1371+ %7 = struct_extract %6 : $UnsafeMutablePointer<X>, #UnsafeMutablePointer._rawValue
1372+ %8 = pointer_to_address %7 : $Builtin.RawPointer to $*X
1373+ store %0 to [init] %8 : $*X
1374+ return %5 : $Array<X>
1375+ }
1376+
13561377sil [_semantics "array.withUnsafeMutableBufferPointer"] @withUnsafeMutableBufferPointer : $@convention(method) (@owned @callee_owned (@inout X) -> (@out (), @error Error), @inout Array<X>) -> (@out (), @error Error)
13571378sil [_semantics "array.props.isNativeTypeChecked"] @is_native_type_checked : $@convention(method) (@guaranteed Array<X>) -> Bool
13581379sil [_semantics "array.check_subscript"] @check_subscript : $@convention(method) (Int32, Bool, @guaranteed Array<X>) -> ()
0 commit comments