Skip to content

Commit b67d236

Browse files
committed
[test] Adds an IRGen test
1 parent ea55551 commit b67d236

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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

Comments
 (0)