1
- // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -emit-ir | %FileCheck -check-prefix= %target-cpu %s
1
+ // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -emit-ir | %FileCheck -check-prefix CHECK -check-prefix CHECK-%target-ptrsize -check-prefix %target-cpu %s
2
2
3
3
// rdar://16565958
4
4
5
5
import Builtin
6
6
import Swift
7
7
8
- // x86_64: [[OBJC:%objc_object]] = type
9
- // armv7: [[OBJC:%objc_object]] = type
10
- // armv7s: [[OBJC:%objc_object]] = type
11
- // armv7k: [[OBJC:%objc_object]] = type
12
- // arm64: [[OBJC:%objc_object]] = type
13
- // i386: [[OBJC:%objc_object]] = type
8
+ // CHECK: [[OBJC:%objc_object]] = type
14
9
15
10
class C {}
16
11
sil_vtable C {}
@@ -24,50 +19,29 @@ sil @foo : $@convention(thin) (@owned C?) -> @autoreleased C? {
24
19
bb0(%0 : @owned $C?):
25
20
return %0 : $C?
26
21
}
27
- // x86_64: define{{( dllexport| protected)?}} swiftcc i64 @foo(i64) {{.*}} {
28
- // x86_64: [[T0:%.*]] = tail call i64 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i64 (i64)*)(i64 %0)
29
- // x86_64-NEXT: ret i64 [[T0]]
30
22
31
- // i386: define{{( dllexport| protected)?}} swiftcc i32 @foo(i32) {{.*}} {
32
- // i386: [[T0:%.*]] = tail call i32 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i32 (i32)*)(i32 %0)
33
- // i386- NEXT: ret i32 [[T0]]
23
+ // CHECK-32: define{{( dllexport| protected)?}} swiftcc i32 @foo(i32) {{.*}} {
24
+ // CHECK-32: [[T0:%.*]] = tail call i32 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i32 (i32)*)(i32 %0)
25
+ // CHECK-32- NEXT: ret i32 [[T0]]
34
26
35
- // arm64: define{{( dllexport| protected)?}} swiftcc i64 @foo(i64) {{.*}} {
36
- // arm64: [[T0:%.*]] = tail call i64 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i64 (i64)*)(i64 %0)
37
- // arm64-NEXT: ret i64 [[T0]]
38
-
39
- // armv7: define{{( dllexport| protected)?}} swiftcc i32 @foo(i32) {{.*}} {
40
- // armv7: [[T0:%.*]] = tail call i32 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i32 (i32)*)(i32 %0)
41
- // armv7-NEXT: ret i32 [[T0]]
42
-
43
- // armv7s: define{{( dllexport| protected)?}} swiftcc i32 @foo(i32) {{.*}} {
44
- // armv7s: [[T0:%.*]] = tail call i32 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i32 (i32)*)(i32 %0)
45
- // armv7s-NEXT: ret i32 [[T0]]
46
-
47
- // armv7k: define{{( dllexport| protected)?}} swiftcc i32 @foo(i32) {{.*}} {
48
- // armv7k: [[T0:%.*]] = tail call i32 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i32 (i32)*)(i32 %0)
49
- // armv7k-NEXT: ret i32 [[T0]]
27
+ // CHECK-64: define{{( dllexport| protected)?}} swiftcc i64 @foo(i64) {{.*}} {
28
+ // CHECK-64: [[T0:%.*]] = tail call i64 bitcast ([[OBJC]]* ([[OBJC]]*)* @objc_autoreleaseReturnValue to i64 (i64)*)(i64 %0)
29
+ // CHECK-64-NEXT: ret i64 [[T0]]
50
30
51
31
sil @bar : $@convention(thin) (@owned C?) -> @owned C? {
52
32
bb0(%0 : @owned $C?):
53
33
%1 = function_ref @foo : $@convention(thin) (@owned C?) -> @autoreleased C?
54
34
%2 = apply %1(%0) : $@convention(thin) (@owned C?) -> @autoreleased C?
55
35
return %2 : $C?
56
36
}
37
+
57
38
// x86_64: define{{( dllexport| protected)?}} swiftcc i64 @bar(i64)
58
39
// x86_64: [[T0:%.*]] = call swiftcc i64 @foo(i64 %0)
59
40
// x86_64-NEXT: [[T1:%.*]] = inttoptr i64 [[T0]] to i8*
60
41
// x86_64-NEXT: [[T2:%.*]] = notail call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
61
42
// x86_64-NEXT: [[T3:%.*]] = ptrtoint i8* [[T2]] to i64
62
43
// x86_64-NEXT: ret i64 [[T3]]
63
44
64
- // i386: define{{( dllexport| protected)?}} swiftcc i32 @bar(i32)
65
- // i386: [[T0:%.*]] = call swiftcc i32 @foo(i32 %0)
66
- // i386-NEXT: [[T1:%.*]] = inttoptr i32 [[T0]] to i8*
67
- // i386-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
68
- // i386-NEXT: [[T3:%.*]] = ptrtoint i8* [[T2]] to i32
69
- // i386-NEXT: ret i32 [[T3]]
70
-
71
45
// arm64: define{{( dllexport| protected)?}} swiftcc i64 @bar(i64)
72
46
// arm64: [[T0:%.*]] = call swiftcc i64 @foo(i64 %0)
73
47
// arm64-NEXT: call void asm sideeffect "mov
@@ -76,6 +50,13 @@ bb0(%0 : @owned $C?):
76
50
// arm64-NEXT: [[T3:%.*]] = ptrtoint i8* [[T2]] to i64
77
51
// arm64-NEXT: ret i64 [[T3]]
78
52
53
+ // i386: define{{( dllexport| protected)?}} swiftcc i32 @bar(i32)
54
+ // i386: [[T0:%.*]] = call swiftcc i32 @foo(i32 %0)
55
+ // i386-NEXT: [[T1:%.*]] = inttoptr i32 [[T0]] to i8*
56
+ // i386-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
57
+ // i386-NEXT: [[T3:%.*]] = ptrtoint i8* [[T2]] to i32
58
+ // i386-NEXT: ret i32 [[T3]]
59
+
79
60
// armv7: define{{( dllexport| protected)?}} swiftcc i32 @bar(i32)
80
61
// armv7: [[T0:%.*]] = call swiftcc i32 @foo(i32 %0)
81
62
// armv7-NEXT: call void asm sideeffect "mov
0 commit comments