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
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
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
117112func backdeployMacExplicit( ) {
118113 if #available( iOS 54 . 7 . 2 , macOS 10 . 14 . 5 , * ) {
119114 }
0 commit comments