Skip to content
Snippets Groups Projects
Commit 4633b85c authored by Akira Hatanaka's avatar Akira Hatanaka
Browse files

[Driver] Allow users to silence the warning that is issued when the

deployment target is earlier than iOS 11 and the target is 32-bit.

This is a follow-up to r306922.

rdar://problem/32230613

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@309607 91177308-0d34-0410-b5e6-96231b3b80d8
parent 8cd04fa4
No related branches found
No related tags found
No related merge requests found
...@@ -138,9 +138,10 @@ def err_drv_cc_print_options_failure : Error< ...@@ -138,9 +138,10 @@ def err_drv_cc_print_options_failure : Error<
def err_drv_lto_without_lld : Error<"LTO requires -fuse-ld=lld">; def err_drv_lto_without_lld : Error<"LTO requires -fuse-ld=lld">;
def err_drv_preamble_format : Error< def err_drv_preamble_format : Error<
"incorrect format for -preamble-bytes=N,END">; "incorrect format for -preamble-bytes=N,END">;
def err_invalid_ios_deployment_target : Error< def warn_invalid_ios_deployment_target : Warning<
"invalid iOS deployment version '%0', iOS 10 is the maximum deployment " "invalid iOS deployment version '%0', iOS 10 is the maximum deployment "
"target for 32-bit targets">; "target for 32-bit targets">, InGroup<InvalidIOSDeploymentTarget>,
DefaultError;
def err_drv_conflicting_deployment_targets : Error< def err_drv_conflicting_deployment_targets : Error<
"conflicting deployment targets, both '%0' and '%1' are present in environment">; "conflicting deployment targets, both '%0' and '%1' are present in environment">;
def err_arc_unsupported_on_runtime : Error< def err_arc_unsupported_on_runtime : Error<
......
...@@ -153,6 +153,9 @@ def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">; ...@@ -153,6 +153,9 @@ def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">; def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
def FormatExtraArgs : DiagGroup<"format-extra-args">; def FormatExtraArgs : DiagGroup<"format-extra-args">;
def FormatZeroLength : DiagGroup<"format-zero-length">; def FormatZeroLength : DiagGroup<"format-zero-length">;
def InvalidIOSDeploymentTarget : DiagGroup<"invalid-ios-deployment-target">;
def CXX1zCompatMangling : DiagGroup<"c++1z-compat-mangling">; def CXX1zCompatMangling : DiagGroup<"c++1z-compat-mangling">;
// Name of this warning in GCC. // Name of this warning in GCC.
def NoexceptType : DiagGroup<"noexcept-type", [CXX1zCompatMangling]>; def NoexceptType : DiagGroup<"noexcept-type", [CXX1zCompatMangling]>;
......
...@@ -1179,7 +1179,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { ...@@ -1179,7 +1179,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
Driver::GetReleaseVersion(iOSVersion->getValue(), Major, Minor, Micro, Driver::GetReleaseVersion(iOSVersion->getValue(), Major, Minor, Micro,
HadExtra) && HadExtra) &&
Major > 10) Major > 10)
getDriver().Diag(diag::err_invalid_ios_deployment_target) getDriver().Diag(diag::warn_invalid_ios_deployment_target)
<< iOSVersion->getAsString(Args); << iOSVersion->getAsString(Args);
// Add a macro to differentiate between m(iphone|tv|watch)os-version-min=X.Y and // Add a macro to differentiate between m(iphone|tv|watch)os-version-min=X.Y and
...@@ -1228,7 +1228,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { ...@@ -1228,7 +1228,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
Driver::GetReleaseVersion(iOSTarget.c_str(), Major, Minor, Micro, Driver::GetReleaseVersion(iOSTarget.c_str(), Major, Minor, Micro,
HadExtra) && HadExtra) &&
Major > 10) Major > 10)
getDriver().Diag(diag::err_invalid_ios_deployment_target) getDriver().Diag(diag::warn_invalid_ios_deployment_target)
<< std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget; << std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget;
// If there is no command-line argument to specify the Target version and // If there is no command-line argument to specify the Target version and
...@@ -1298,6 +1298,15 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { ...@@ -1298,6 +1298,15 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
break; break;
case llvm::Triple::IOS: case llvm::Triple::IOS:
getTriple().getiOSVersion(Major, Minor, Micro); getTriple().getiOSVersion(Major, Minor, Micro);
// iOS 10 is the maximum deployment target for 32-bit targets. If the
// inferred deployment target is iOS 11 or later, set it to 10.99.
if (getTriple().isArch32Bit() && Major >= 11) {
Major = 10;
Minor = 99;
Micro = 99;
}
OSTarget = &iOSTarget; OSTarget = &iOSTarget;
break; break;
case llvm::Triple::TvOS: case llvm::Triple::TvOS:
...@@ -1393,13 +1402,6 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { ...@@ -1393,13 +1402,6 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
HadExtra || Major >= 100 || Minor >= 100 || Micro >= 100) HadExtra || Major >= 100 || Minor >= 100 || Micro >= 100)
getDriver().Diag(diag::err_drv_invalid_version_number) getDriver().Diag(diag::err_drv_invalid_version_number)
<< iOSVersion->getAsString(Args); << iOSVersion->getAsString(Args);
// iOS 10 is the maximum deployment target for 32-bit targets. If the
// inferred deployment target is iOS 11 or later, set it to 10.99.
if (getTriple().isArch32Bit() && Major >= 11) {
Major = 10;
Minor = 99;
Micro = 99;
}
} else if (Platform == TvOS) { } else if (Platform == TvOS) {
if (!Driver::GetReleaseVersion(TvOSVersion->getValue(), Major, Minor, if (!Driver::GetReleaseVersion(TvOSVersion->getValue(), Major, Minor,
Micro, HadExtra) || HadExtra || Micro, HadExtra) || HadExtra ||
......
...@@ -45,6 +45,10 @@ ...@@ -45,6 +45,10 @@
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS11 %s // RUN: FileCheck --check-prefix=CHECK-VERSION-IOS11 %s
// CHECK-VERSION-IOS11: arm64-apple-ios11.1.0 // CHECK-VERSION-IOS11: arm64-apple-ios11.1.0
// RUN: %clang -target armv7-apple-ios9.0 -miphoneos-version-min=11.0 -c -Wno-invalid-ios-deployment-target -### %s 2>&1 | \
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS12 %s
// CHECK-VERSION-IOS12: thumbv7-apple-ios11.0.0
// RUN: %clang -target i686-apple-darwin8 -c %s -### 2>&1 | \ // RUN: %clang -target i686-apple-darwin8 -c %s -### 2>&1 | \
// RUN: FileCheck --check-prefix=CHECK-VERSION-OSX4 %s // RUN: FileCheck --check-prefix=CHECK-VERSION-OSX4 %s
// RUN: %clang -target i686-apple-darwin9 -mmacosx-version-min=10.4 -c %s -### 2>&1 | \ // RUN: %clang -target i686-apple-darwin9 -mmacosx-version-min=10.4 -c %s -### 2>&1 | \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment