Commit 5b60b618 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r309633, r309636 and r309640:

------------------------------------------------------------------------
r309633 | ahatanak | 2017-07-31 15:19:34 -0700 (Mon, 31 Jul 2017) | 6 lines

[Driver] Make sure the deployment target is earlier than iOS 11 when
it is inferred from -isysroot.

This fixes a change that was inadvertently introduced in r309607.

rdar://problem/32230613
------------------------------------------------------------------------

------------------------------------------------------------------------
r309636 | ahatanak | 2017-07-31 15:46:00 -0700 (Mon, 31 Jul 2017) | 1 line

Silence warning -Wmissing-sysroot.
------------------------------------------------------------------------

------------------------------------------------------------------------
r309640 | ahatanak | 2017-07-31 16:08:52 -0700 (Mon, 31 Jul 2017) | 1 line

Use -target instead of -arch in test case.
------------------------------------------------------------------------

llvm-svn: 310676
parent 8765e1e3
Loading
Loading
Loading
Loading
+23 −23
Original line number Diff line number Diff line
@@ -1174,13 +1174,12 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
  unsigned Major, Minor, Micro;
  bool HadExtra;

  // iOS 10 is the maximum deployment target for 32-bit targets.
  if (iOSVersion && getTriple().isArch32Bit() &&
      Driver::GetReleaseVersion(iOSVersion->getValue(), Major, Minor, Micro,
                                HadExtra) &&
      Major > 10)
    getDriver().Diag(diag::warn_invalid_ios_deployment_target)
        << iOSVersion->getAsString(Args);
  // The iOS deployment target that is explicitly specified via a command line
  // option or an environment variable.
  std::string ExplicitIOSDeploymentTargetStr;

  if (iOSVersion)
    ExplicitIOSDeploymentTargetStr = iOSVersion->getAsString(Args);

  // Add a macro to differentiate between m(iphone|tv|watch)os-version-min=X.Y and
  // -m(iphone|tv|watch)simulator-version-min=X.Y.
@@ -1223,13 +1222,9 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
    if (char *env = ::getenv("WATCHOS_DEPLOYMENT_TARGET"))
      WatchOSTarget = env;

    // iOS 10 is the maximum deployment target for 32-bit targets.
    if (!iOSTarget.empty() && getTriple().isArch32Bit() &&
        Driver::GetReleaseVersion(iOSTarget.c_str(), Major, Minor, Micro,
                                  HadExtra) &&
        Major > 10)
      getDriver().Diag(diag::warn_invalid_ios_deployment_target)
          << std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget;
    if (!iOSTarget.empty())
      ExplicitIOSDeploymentTargetStr =
          std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget;

    // If there is no command-line argument to specify the Target version and
    // no environment variable defined, see if we can set the default based
@@ -1298,15 +1293,6 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
          break;
        case llvm::Triple::IOS:
          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;
          break;
        case llvm::Triple::TvOS:
@@ -1402,6 +1388,20 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
        HadExtra || Major >= 100 || Minor >= 100 || Micro >= 100)
      getDriver().Diag(diag::err_drv_invalid_version_number)
          << iOSVersion->getAsString(Args);
    // For 32-bit targets, the deployment target for iOS has to be earlier than
    // iOS 11.
    if (getTriple().isArch32Bit() && Major >= 11) {
      // If the deployment target is explicitly specified, print a diagnostic.
      if (!ExplicitIOSDeploymentTargetStr.empty()) {
        getDriver().Diag(diag::warn_invalid_ios_deployment_target)
            << ExplicitIOSDeploymentTargetStr;
      // Otherwise, set it to 10.99.99.
      } else {
        Major = 10;
        Minor = 99;
        Micro = 99;
      }
    }
  } else if (Platform == TvOS) {
    if (!Driver::GetReleaseVersion(TvOSVersion->getValue(), Major, Minor,
                                   Micro, HadExtra) || HadExtra ||
+2 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@

// RUN: %clang -target armv7-apple-ios11.1 -c -### %s 2>&1 | \
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS7 %s
// RUN: %clang -target armv7-apple-ios9 -Wno-missing-sysroot -isysroot SDKs/iPhoneOS11.0.sdk -c -### %s 2>&1 | \
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS7 %s
// CHECK-VERSION-IOS7: thumbv7-apple-ios10.99.99

// RUN: env IPHONEOS_DEPLOYMENT_TARGET=11.0 \