Skip to content

Commit a1ffae5

Browse files
committed
[test] Update IRGen test with patterns, etc
1 parent 77b6b1b commit a1ffae5

File tree

1 file changed

+47
-46
lines changed

1 file changed

+47
-46
lines changed
Lines changed: 47 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,71 @@
11
// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s
2+
// REQUIRES: objc_interop
23

34
import Foundation
45

56
@objc protocol SR_9035_P {
67
func returnUnmanagedCFArray() throws -> Unmanaged<CFArray>
78
}
89

9-
// CHECK: define hidden swiftcc %TSo10CFArrayRefa* @"$s25unmanaged_objc_throw_func9SR_9035_CC22returnUnmanagedCFArrays0G0VySo0H3RefaGyKF"(%T25unmanaged_objc_throw_func9SR_9035_CC* swiftself, %swift.error** noalias nocapture swifterror dereferenceable(8)) #0 {
10+
// CHECK-LABEL: define hidden swiftcc %TSo10CFArrayRefa* @"$s25unmanaged_objc_throw_func9SR_9035_CC22returnUnmanagedCFArrays0G0VySo0H3RefaGyKF"(%T25unmanaged_objc_throw_func9SR_9035_CC* swiftself, %swift.error** noalias nocapture swifterror dereferenceable(8)) #{{[0-9]+}} {
1011
@objc class SR_9035_C: NSObject, SR_9035_P {
1112
func returnUnmanagedCFArray() throws -> Unmanaged<CFArray> {
12-
// CHECK: %3 = call swiftcc { %swift.bridge*, i8* } @"$ss27_allocateUninitializedArrayySayxG_BptBwlF"(i64 1, %swift.type* @"$sSiN")
13-
// CHECK-NEXT: %4 = extractvalue { %swift.bridge*, i8* } %3, 0
14-
// CHECK-NEXT: %5 = extractvalue { %swift.bridge*, i8* } %3, 1
15-
// CHECK-NEXT: %6 = bitcast i8* %5 to %TSi*
16-
// CHECK-NEXT: %._value = getelementptr inbounds %TSi, %TSi* %6, i32 0, i32 0
13+
// CHECK: %[[T0:.+]] = call swiftcc { %swift.bridge*, i8* } @"$ss27_allocateUninitializedArrayySayxG_BptBwlF"(i64 1, %swift.type* @"$sSiN")
14+
// CHECK-NEXT: %[[T1:.+]] = extractvalue { %swift.bridge*, i8* } %[[T0]], 0
15+
// CHECK-NEXT: %[[T2:.+]] = extractvalue { %swift.bridge*, i8* } %[[T0]], 1
16+
// CHECK-NEXT: %[[T3:.+]] = bitcast i8* %[[T2]] to %TSi*
17+
// CHECK-NEXT: %._value = getelementptr inbounds %TSi, %TSi* %[[T3]], i32 0, i32 0
1718
// CHECK-NEXT: store i64 1, i64* %._value, align 8
18-
// CHECK-NEXT: %7 = call swiftcc %TSo7NSArrayC* @"$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF"(%swift.bridge* %4, %swift.type* @"$sSiN")
19-
// CHECK-NEXT: %8 = bitcast %TSo7NSArrayC* %7 to %TSo10CFArrayRefa*
20-
// CHECK-NEXT: call void asm sideeffect "", "r"(%TSo10CFArrayRefa* %8)
21-
// CHECK-NEXT: call void @swift_bridgeObjectRelease(%swift.bridge* %4) #2
22-
// CHECK-NEXT: %9 = bitcast %TSo10CFArrayRefa* %8 to i8*
23-
// CHECK-NEXT: call void @llvm.objc.release(i8* %9)
24-
// CHECK-NEXT: ret %TSo10CFArrayRefa* %8
19+
// CHECK-NEXT: %[[T4:.+]] = call swiftcc %TSo7NSArrayC* @"$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF"(%swift.bridge* %[[T1]], %swift.type* @"$sSiN")
20+
// CHECK-NEXT: %[[T5:.+]] = bitcast %TSo7NSArrayC* %[[T4]] to %TSo10CFArrayRefa*
21+
// CHECK-NEXT: call void asm sideeffect "", "r"(%TSo10CFArrayRefa* %[[T5]])
22+
// CHECK-NEXT: call void @swift_bridgeObjectRelease(%swift.bridge* %[[T1]]) #{{[0-9]+}}
23+
// CHECK-NEXT: %[[T6:.+]] = bitcast %TSo10CFArrayRefa* %[[T5]] to i8*
24+
// CHECK-NEXT: call void @llvm.objc.release(i8* %[[T6]])
25+
// CHECK-NEXT: ret %TSo10CFArrayRefa* %[[T5]]
2526
let arr = [1] as CFArray
2627
return Unmanaged.passUnretained(arr)
2728
}
2829
}
2930

30-
// CHECK: %14 = call swiftcc %TSo10CFArrayRefa* @"$s25unmanaged_objc_throw_func9SR_9035_CC22returnUnmanagedCFArrays0G0VySo0H3RefaGyKF"(%T25unmanaged_objc_throw_func9SR_9035_CC* swiftself %4, %swift.error** noalias nocapture swifterror dereferenceable(8) %swifterror) #6
31-
// CHECK-NEXT: %15 = load %swift.error*, %swift.error** %swifterror, align 8
32-
// CHECK-NEXT: %16 = icmp ne %swift.error* %15, null
33-
// CHECK-NEXT: br i1 %16, label %20, label %17
31+
// CHECK: %[[T0:.+]] = call swiftcc %TSo10CFArrayRefa* @"$s25unmanaged_objc_throw_func9SR_9035_CC22returnUnmanagedCFArrays0G0VySo0H3RefaGyKF"(%T25unmanaged_objc_throw_func9SR_9035_CC* swiftself %{{.+}}, %swift.error** noalias nocapture swifterror dereferenceable(8) %swifterror) #{{[0-9]+}}
32+
// CHECK-NEXT: %[[T2:.+]] = load %swift.error*, %swift.error** %swifterror, align 8
33+
// CHECK-NEXT: %[[T3:.+]] = icmp ne %swift.error* %[[T2]], null
34+
// CHECK-NEXT: br i1 %[[T3]], label %[[L1:.+]], label %[[L2:.+]]
3435

35-
// CHECK: ; <label>:17: ; preds = %entry
36-
// CHECK-NEXT: %18 = phi %TSo10CFArrayRefa* [ %14, %entry ]
37-
// CHECK-NEXT: %19 = ptrtoint %TSo10CFArrayRefa* %18 to i64
38-
// CHECK-NEXT: br label %37
36+
// CHECK: ; <label>:[[L2]]: ; preds = %entry
37+
// CHECK-NEXT: %[[T4:.+]] = phi %TSo10CFArrayRefa* [ %[[T0]], %entry ]
38+
// CHECK-NEXT: %[[T5:.+]] = ptrtoint %TSo10CFArrayRefa* %[[T4]] to i64
39+
// CHECK-NEXT: br label %[[L3:.+]]
3940

40-
// CHECK: ; <label>:20: ; preds = %entry
41-
// CHECK-NEXT: %21 = phi %swift.error* [ %15, %entry ]
41+
// CHECK: ; <label>:[[L1]]: ; preds = %entry
42+
// CHECK-NEXT: %[[T6:.+]] = phi %swift.error* [ %[[T2]], %entry ]
4243
// CHECK-NEXT: store %swift.error* null, %swift.error** %swifterror, align 8
43-
// CHECK-NEXT: %22 = icmp eq i64 %5, 0
44-
// CHECK-NEXT: br i1 %22, label %35, label %23
44+
// CHECK-NEXT: %[[T7:.+]] = icmp eq i64 %{{.+}}, 0
45+
// CHECK-NEXT: br i1 %[[T7]], label %[[L4:.+]], label %[[L5:.+]]
4546

46-
// CHECK: ; <label>:23: ; preds = %20
47-
// CHECK-NEXT: %24 = inttoptr i64 %5 to i8*
48-
// CHECK-NEXT: br label %25
47+
// CHECK: ; <label>:[[L5]]: ; preds = %[[L1]]
48+
// CHECK-NEXT: %[[T8:.+]] = inttoptr i64 %{{.+}} to i8*
49+
// CHECK-NEXT: br label %[[L6:.+]]
4950

50-
// CHECK: ; <label>:25: ; preds = %23
51-
// CHECK-NEXT: %26 = phi i8* [ %24, %23 ]
52-
// CHECK-NEXT: %27 = call swiftcc %TSo7NSErrorC* @"$s10Foundation22_convertErrorToNSErrorySo0E0Cs0C0_pF"(%swift.error* %21) #6
53-
// CHECK: call swiftcc void @"$sSA7pointeexvs"(%swift.opaque* noalias nocapture %31, i8* %26, %swift.type* %33) #6
54-
// CHECK-NEXT: %34 = bitcast %TSo7NSErrorCSg* %3 to i8*
55-
// CHECK: call void @swift_errorRelease(%swift.error* %21) #2
56-
// CHECK-NEXT: br label %36
51+
// CHECK: ; <label>:[[L6]]: ; preds = %[[L5]]
52+
// CHECK-NEXT: %[[T9:.+]] = phi i8* [ %[[T8]], %[[L5]] ]
53+
// CHECK-NEXT: %[[T10:.+]] = call swiftcc %TSo7NSErrorC* @"$s10Foundation22_convertErrorToNSErrorySo0E0Cs0C0_pF"(%swift.error* %[[T6]]) #{{[0-9]+}}
54+
// CHECK: call swiftcc void @"$sSA7pointeexvs"(%swift.opaque* noalias nocapture %31, i8* %26, %swift.type* %33) #{{[0-9]+}}
55+
// CHECK-NEXT: %[[T11:.+]] = bitcast %TSo7NSErrorCSg* %{{.+}} to i8*
56+
// CHECK: call void @swift_errorRelease(%swift.error* %[[T6]]) #{{[0-9]+}}
57+
// CHECK-NEXT: br label %[[L7:.+]]
5758

58-
// CHECK: ; <label>:35: ; preds = %20
59-
// CHECK-NEXT: call void @swift_errorRelease(%swift.error* %21) #2
60-
// CHECK-NEXT: br label %36
59+
// CHECK: ; <label>:[[L4]]: ; preds = %[[L1]]
60+
// CHECK-NEXT: call void @swift_errorRelease(%swift.error* %[[T6]]) #{{[0-9]+}}
61+
// CHECK-NEXT: br label %[[L7]]
6162

62-
// CHECK: ; <label>:36: ; preds = %25, %35
63-
// CHECK-NEXT: br label %37
63+
// CHECK: ; <label>:[[L7]]: ; preds = %[[L6]], %[[L4]]
64+
// CHECK-NEXT: br label %[[L3]]
6465

65-
// CHECK: ; <label>:37: ; preds = %17, %36
66-
// CHECK-NEXT: %38 = phi i64 [ 0, %36 ], [ %19, %17 ]
67-
// CHECK-NEXT: %39 = bitcast %T25unmanaged_objc_throw_func9SR_9035_CC* %4 to i8*
68-
// CHECK-NEXT: call void @llvm.objc.release(i8* %39)
69-
// CHECK-NEXT: %40 = inttoptr i64 %38 to %struct.__CFArray**
70-
// CHECK-NEXT: ret %struct.__CFArray** %40
66+
// CHECK: ; <label>:[[L3]]: ; preds = %[[L2]], %[[L7]]
67+
// CHECK-NEXT: %[[T12:.+]] = phi i64 [ 0, %[[L7]] ], [ %[[T5]], %[[L2]] ]
68+
// CHECK-NEXT: %[[T13:.+]] = bitcast %T25unmanaged_objc_throw_func9SR_9035_CC* %{{.+}} to i8*
69+
// CHECK-NEXT: call void @llvm.objc.release(i8* %[[T13]])
70+
// CHECK-NEXT: %[[T14:.+]] = inttoptr i64 %[[T12]] to %struct.__CFArray**
71+
// CHECK-NEXT: ret %struct.__CFArray** %[[T14]]

0 commit comments

Comments
 (0)