1
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.52 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s
2
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.52 | %FileCheck %s
1
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.52 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s --check-prefixes=CHECK,CHECK-NO-BACKDEPLOY-MAC
2
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.52 | %FileCheck %s --check-prefixes=CHECK,CHECK-NO-BACKDEPLOY-MAC
3
3
4
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.14.4 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s --check-prefix= CHECK-BACKDEPLOY-MAC
5
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.14.4 | %FileCheck %s --check-prefix= CHECK-BACKDEPLOY-MAC
4
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.14.4 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s --check-prefixes=CHECK, CHECK-BACKDEPLOY-MAC
5
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.14.4 | %FileCheck %s --check-prefixes=CHECK, CHECK-BACKDEPLOY-MAC
6
6
7
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.15 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s --check-prefix =CHECK-DEPLOY10_15 -MAC
8
- // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.15 | %FileCheck %s --check-prefix =CHECK-DEPLOY10_15 -MAC
7
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-macosx10.15 -target-variant %target-cpu-apple-ios50.0-macabi | %FileCheck %s --check-prefixes =CHECK,CHECK-NO-BACKDEPLOY -MAC
8
+ // RUN: %target-swift-emit-silgen %s -target %target-cpu-apple-ios50.0-macabi -target-variant %target-cpu-apple-macosx10.15 | %FileCheck %s --check-prefixes =CHECK,CHECK-NO-BACKDEPLOY -MAC
9
9
10
10
// REQUIRES: OS=macosx || OS=maccatalyst
11
11
17
17
// version in an macCatalyst process and against the macOS version
18
18
// in a macOS process.
19
19
20
+ // CHECK-LABEL: // zippered()
20
21
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
21
22
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 53
22
23
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 8
25
26
// CHECK: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
26
27
// CHECK: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
27
28
// CHECK: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
28
- if #available( OSX 10 . 53 . 8 , iOS 51 . 1 . 2 , * ) {
29
+ func zippered( ) {
30
+ if #available( OSX 10 . 53 . 8 , iOS 51 . 1 . 2 , * ) {
31
+ }
29
32
}
30
33
31
34
// Make sure macCatalyst wins over iOS.
32
35
36
+ // CHECK-LABEL: // macCatalystWins()
33
37
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
34
38
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 53
35
39
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 8
@@ -38,16 +42,22 @@ if #available(OSX 10.53.8, iOS 51.1.2, *) {
38
42
// CHECK: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 5
39
43
// CHECK: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
40
44
// CHECK: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
41
- if #available( OSX 10 . 53 . 8 , iOS 51 . 1 . 2 , macCatalyst 52 . 3 . 5 , * ) {
45
+ func macCatalystWins( ) {
46
+ if #available( OSX 10 . 53 . 8 , iOS 51 . 1 . 2 , macCatalyst 52 . 3 . 5 , * ) {
47
+ }
42
48
}
43
49
50
+ // CHECK-LABEL: // noMatch()
44
51
// CHECK: [[TRUE:%.*]] = integer_literal $Builtin.Int1, -1
45
52
// CHECK: cond_br [[TRUE]]
46
53
// The '*' matches for both macOS and macCatalyst, so the condition
47
54
// should always be true.
48
- if #available( tvOS 9 . 0 , * ) {
55
+ func noMatch( ) {
56
+ if #available( tvOS 9 . 0 , * ) {
57
+ }
49
58
}
50
59
60
+ // CHECK-LABEL: // macOSOnly()
51
61
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
52
62
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 54
53
63
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 3
@@ -56,64 +66,49 @@ if #available(tvOS 9.0, *) {
56
66
// The '*' matches for iOS, so we only need to check to check the
57
67
// macOS version and thus use the primary target version check
58
68
// entrypoint.
59
- if #available( macOS 10 . 54 . 3 , * ) {
69
+ func macOSOnly( ) {
70
+ if #available( macOS 10 . 54 . 3 , * ) {
71
+ }
60
72
}
61
73
62
- // CHECK: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
63
- // CHECK: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
64
- // CHECK: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
65
- // CHECK: [[QUERY_FUNC:%.*]] = function_ref @$ss33_stdlib_isVariantOSVersionAtLeastyBi1_Bw_BwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
66
- // CHECK: [[QUERY_RESULT:%.*]] = apply [[QUERY_FUNC]]([[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
74
+ // CHECK-LABEL: // iOSOnly()
75
+ // CHECK-NO-BACKDEPLOY-MAC: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
76
+ // CHECK-NO-BACKDEPLOY-NEXT: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
77
+ // CHECK-NO-BACKDEPLOY-NEXT: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
78
+ // CHECK-NO-BACKDEPLOY: [[QUERY_FUNC:%.*]] = function_ref @$ss33_stdlib_isVariantOSVersionAtLeastyBi1_Bw_BwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
79
+ // CHECK-NO-BACKDEPLOY: [[QUERY_RESULT:%.*]] = apply [[QUERY_FUNC]]([[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
80
+
81
+ // CHECK-BACKDEPLOY-MAC: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
82
+ // CHECK-BACKDEPLOY-MAC-NEXT: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 14
83
+ // CHECK-BACKDEPLOY-MAC-NEXT: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 4
84
+ // CHECK-BACKDEPLOY-MAC-NEXT: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
85
+ // CHECK-BACKDEPLOY-MAC-NEXT: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
86
+ // CHECK-BACKDEPLOY-MAC-NEXT: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
87
+ // CHECK-BACKDEPLOY-MAC: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
88
+ // CHECK-BACKDEPLOY-MAC: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
67
89
// The '*' matches for macOS, so we only need to check to check the
68
90
// iOS version and thus use the variant target version check
69
91
// entrypoint.
70
- if #available( iOS 54 . 7 . 2 , * ) {
71
- }
72
92
73
93
// The ss33_stdlib_isVariantOSVersionAtLeastyBi1_Bw_BwBwtF entry point only exists
74
94
// on macOS 10.15+, so apply the optimization to omit the macOS version if the macOS
75
95
// deployment target is earlier than 10.15. In this case, use the
76
96
// ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF
77
97
// entry point, which is present in 10.14.4 and is part of the Swift 5.0 ABI.
78
-
79
- // CHECK-BACKDEPLOY-MAC-LABEL: // backdeployMacStar()
80
- // CHECK-BACKDEPLOY-MAC: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
81
- // CHECK-BACKDEPLOY-MAC: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 14
82
- // CHECK-BACKDEPLOY-MAC: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 4
83
- // CHECK-BACKDEPLOY-MAC: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
84
- // CHECK-BACKDEPLOY-MAC: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
85
- // CHECK-BACKDEPLOY-MAC: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
86
- // CHECK-BACKDEPLOY-MAC: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
87
- // CHECK-BACKDEPLOY-MAC: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
88
- // CHECK-DEPLOY10_15-MAC-LABEL: // backdeployMacStar()
89
- // CHECK-DEPLOY10_15-MAC: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
90
- // CHECK-DEPLOY10_15-MAC: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
91
- // CHECK-DEPLOY10_15-MAC: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
92
- // CHECK-DEPLOY10_15-MAC: [[QUERY_FUNC:%.*]] = function_ref @$ss33_stdlib_isVariantOSVersionAtLeastyBi1_Bw_BwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
93
- // CHECK-DEPLOY10_15-MAC: [[QUERY_RESULT:%.*]] = apply [[QUERY_FUNC]]([[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
94
- func backdeployMacStar( ) {
98
+ func iOSOnly( ) {
95
99
if #available( iOS 54 . 7 . 2 , * ) {
96
100
}
97
101
}
98
102
99
- // CHECK-BACKDEPLOY-MAC-LABEL: // backdeployMacExplicit()
100
- // CHECK-BACKDEPLOY-MAC: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
101
- // CHECK-BACKDEPLOY-MAC: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 14
102
- // CHECK-BACKDEPLOY-MAC: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 5
103
- // CHECK-BACKDEPLOY-MAC: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
104
- // CHECK-BACKDEPLOY-MAC: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
105
- // CHECK-BACKDEPLOY-MAC: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
106
- // CHECK-BACKDEPLOY-MAC: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
107
- // CHECK-BACKDEPLOY-MAC: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
108
- // CHECK-DEPLOY10_15-MAC-LABEL: // backdeployMacExplicit()
109
- // CHECK-DEPLOY10_15-MAC: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
110
- // CHECK-DEPLOY10_15-MAC: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 14
111
- // CHECK-DEPLOY10_15-MAC: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 5
112
- // CHECK-DEPLOY10_15-MAC: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
113
- // CHECK-DEPLOY10_15-MAC: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
114
- // CHECK-DEPLOY10_15-MAC: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
115
- // CHECK-DEPLOY10_15-MAC: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
116
- // CHECK-DEPLOY10_15-MAC: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
103
+ // CHECK-LABEL: // backdeployMacExplicit()
104
+ // CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
105
+ // CHECK-NEXT: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 14
106
+ // CHECK-NEXT: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 5
107
+ // CHECK-NEXT: [[IOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 54
108
+ // CHECK-NEXT: [[IOS_MINOR:%.*]] = integer_literal $Builtin.Word, 7
109
+ // CHECK-NEXT: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
110
+ // CHECK: [[FUNC:%.*]] = function_ref @$ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
111
+ // CHECK: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MACOS_MAJOR]], [[MACOS_MINOR]], [[MACOS_PATCH]], [[IOS_MAJOR]], [[IOS_MINOR]], [[IOS_PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
117
112
func backdeployMacExplicit( ) {
118
113
if #available( iOS 54 . 7 . 2 , macOS 10 . 14 . 5 , * ) {
119
114
}
0 commit comments