Skip to content

Commit 7651db7

Browse files
authored
Merge pull request #82660 from tshortli/catalyst-silgen-availability-tests
Tests: Improve SILGen tests for `if #available()` on macCatalyst
2 parents 441f9f8 + 767cf5d commit 7651db7

File tree

2 files changed

+55
-52
lines changed

2 files changed

+55
-52
lines changed

test/SILGen/availability_query_maccatalyst.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,11 @@ if #available(OSX 10.53.8, iOS 51.1.2, *) {
2525
// CHECK: [[QUERY_RESULT:%.*]] = apply [[FUNC]]([[MAJOR]], [[MINOR]], [[PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1
2626
if #available(OSX 10.53.8, iOS 51.1.2, macCatalyst 53.2.3, *) {
2727
}
28+
29+
// If there's no iOS or macCatalyst version, then the condition trivially
30+
// evaluates to true
31+
32+
// CHECK: [[TRUE:%.*]] = integer_literal $Builtin.Int1, -1
33+
// CHECK: cond_br [[TRUE]]
34+
if #available(OSX 10.53.8, *) {
35+
}

test/SILGen/availability_query_maccatalyst_zippered.swift

Lines changed: 47 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
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
33

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
66

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
99

1010
// REQUIRES: OS=macosx || OS=maccatalyst
1111

@@ -17,6 +17,7 @@
1717
// version in an macCatalyst process and against the macOS version
1818
// in a macOS process.
1919

20+
// CHECK-LABEL: // zippered()
2021
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
2122
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 53
2223
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 8
@@ -25,11 +26,14 @@
2526
// CHECK: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 2
2627
// 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
2728
// 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+
}
2932
}
3033

3134
// Make sure macCatalyst wins over iOS.
3235

36+
// CHECK-LABEL: // macCatalystWins()
3337
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
3438
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 53
3539
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 8
@@ -38,16 +42,22 @@ if #available(OSX 10.53.8, iOS 51.1.2, *) {
3842
// CHECK: [[IOS_PATCH:%.*]] = integer_literal $Builtin.Word, 5
3943
// 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
4044
// 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+
}
4248
}
4349

50+
// CHECK-LABEL: // noMatch()
4451
// CHECK: [[TRUE:%.*]] = integer_literal $Builtin.Int1, -1
4552
// CHECK: cond_br [[TRUE]]
4653
// The '*' matches for both macOS and macCatalyst, so the condition
4754
// should always be true.
48-
if #available(tvOS 9.0, *) {
55+
func noMatch() {
56+
if #available(tvOS 9.0, *) {
57+
}
4958
}
5059

60+
// CHECK-LABEL: // macOSOnly()
5161
// CHECK: [[MACOS_MAJOR:%.*]] = integer_literal $Builtin.Word, 10
5262
// CHECK: [[MACOS_MINOR:%.*]] = integer_literal $Builtin.Word, 54
5363
// CHECK: [[MACOS_PATCH:%.*]] = integer_literal $Builtin.Word, 3
@@ -56,64 +66,49 @@ if #available(tvOS 9.0, *) {
5666
// The '*' matches for iOS, so we only need to check to check the
5767
// macOS version and thus use the primary target version check
5868
// entrypoint.
59-
if #available(macOS 10.54.3, *) {
69+
func macOSOnly() {
70+
if #available(macOS 10.54.3, *) {
71+
}
6072
}
6173

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
6789
// The '*' matches for macOS, so we only need to check to check the
6890
// iOS version and thus use the variant target version check
6991
// entrypoint.
70-
if #available(iOS 54.7.2, *) {
71-
}
7292

7393
// The ss33_stdlib_isVariantOSVersionAtLeastyBi1_Bw_BwBwtF entry point only exists
7494
// on macOS 10.15+, so apply the optimization to omit the macOS version if the macOS
7595
// deployment target is earlier than 10.15. In this case, use the
7696
// ss042_stdlib_isOSVersionAtLeastOrVariantVersiondE0yBi1_Bw_BwBwBwBwBwtF
7797
// 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() {
9599
if #available(iOS 54.7.2, *) {
96100
}
97101
}
98102

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
117112
func backdeployMacExplicit() {
118113
if #available(iOS 54.7.2, macOS 10.14.5, *) {
119114
}

0 commit comments

Comments
 (0)