1
+ // RUN: %target-swift-frontend -emit-ir -primary-file %s | %FileCheck %s
2
+
3
+ import Foundation
4
+
5
+ @objc protocol SR_9035_P {
6
+ func returnUnmanagedCFArray( ) throws -> Unmanaged < CFArray >
7
+ }
8
+
9
+ @objc class SR_9035_C : NSObject , SR_9035_P {
10
+ func returnUnmanagedCFArray( ) throws -> Unmanaged < CFArray > {
11
+ // CHECK: %3 = call swiftcc { %swift.bridge*, i8* } @"$ss27_allocateUninitializedArrayySayxG_BptBwlF"(i64 1, %swift.type* @"$sSiN")
12
+ // CHECK-NEXT: %4 = extractvalue { %swift.bridge*, i8* } %3, 0
13
+ // CHECK-NEXT: %5 = extractvalue { %swift.bridge*, i8* } %3, 1
14
+ // CHECK-NEXT: %6 = bitcast i8* %5 to %TSi*
15
+ // CHECK-NEXT: %._value = getelementptr inbounds %TSi, %TSi* %6, i32 0, i32 0
16
+ // CHECK-NEXT: store i64 1, i64* %._value, align 8
17
+ // CHECK-NEXT: %7 = call swiftcc %TSo7NSArrayC* @"$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF"(%swift.bridge* %4, %swift.type* @"$sSiN")
18
+ // CHECK-NEXT: %8 = bitcast %TSo7NSArrayC* %7 to %TSo10CFArrayRefa*
19
+ // CHECK-NEXT: call void asm sideeffect "", "r"(%TSo10CFArrayRefa* %8)
20
+ // CHECK-NEXT: call void @swift_bridgeObjectRelease(%swift.bridge* %4) #2
21
+ // CHECK-NEXT: %9 = bitcast %TSo10CFArrayRefa* %8 to i8*
22
+ // CHECK-NEXT: call void @llvm.objc.release(i8* %9)
23
+ // CHECK-NEXT: ret %TSo10CFArrayRefa* %8
24
+ let arr = [ 1 ] as CFArray
25
+ return Unmanaged . passUnretained ( arr)
26
+ }
27
+ }
0 commit comments