<div dir="ltr">I think if a version number isn't explicitly specified in the -target value, the value from -m<platform>-version-min ought to still be used, as it was before.<div><br></div><div>Currently, clang will ignore the -m<platform>-version-min version number if the target has a particular OS specified, even if it has no version number as part of it.<br><div><br></div><div>(We should be able to workaround this change backwards-compatibly by specifying in both the -target argument and in the -m<platform>-version-min arguments, but I do think the behavior should be fixed.)</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 21, 2017 at 10:45 AM, Martin Böhme <span dir="ltr"><<a href="mailto:mboehme@google.com" target="_blank">mboehme@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">This is causing problems in some internal builds that specify both -mios-simulator-version-min=9.<wbr>0 and --target=x86_64-apple-ios<div><br></div><div>My expectation would be for the code to take the minimum OS version number from the -mios-simulator-version-min flag. In fact, however, the code seems to be completely ignoring this flag.</div><div><br></div><div>Is my expectation wrong or does the code need to be modified to take this situation into account?</div><div><br></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On 19 December 2017 at 20:05, Alex Lorenz via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: arphaman<br>
Date: Tue Dec 19 11:05:04 2017<br>
New Revision: 321099<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=321099&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=321099&view=rev</a><br>
Log:<br>
[driver][darwin] Take the OS version specified in "-target" as the target<br>
OS instead of inferring it from SDK / environment<br>
<br>
The OS version is specified in -target should be used instead of the one in an<br>
environment variable / SDK name.<br>
<br>
rdar://35813850<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D40998" rel="noreferrer" target="_blank">https://reviews.llvm.org/D4099<wbr>8</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/Driver/ToolChain<wbr>s/Darwin.cpp<br>
    cfe/trunk/test/Driver/darwin-v<wbr>ersion.c<br>
    cfe/trunk/test/Driver/objc-wea<wbr>k.m<br>
    cfe/trunk/test/Driver/pic.c<br>
    cfe/trunk/test/Driver/unavaila<wbr>ble_aligned_allocation.cpp<br>
<br>
Modified: cfe/trunk/lib/Driver/ToolChain<wbr>s/Darwin.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.cpp?rev=321099&r1=321098&r2=321099&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/lib/Driver/Too<wbr>lChains/Darwin.cpp?rev=321099&<wbr>r1=321098&r2=321099&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/Driver/ToolChain<wbr>s/Darwin.cpp (original)<br>
+++ cfe/trunk/lib/Driver/ToolChain<wbr>s/Darwin.cpp Tue Dec 19 11:05:04 2017<br>
@@ -1233,6 +1233,10 @@ struct DarwinPlatform {<br>
     llvm_unreachable("Unsupported Darwin Source Kind");<br>
   }<br>
<br>
+  static DarwinPlatform createFromTarget(llvm::Triple:<wbr>:OSType OS,<br>
+                                         StringRef OSVersion, Arg *A) {<br>
+    return DarwinPlatform(TargetArg, getPlatformFromOS(OS), OSVersion, A);<br>
+  }<br>
   static DarwinPlatform createOSVersionArg(DarwinPlatf<wbr>ormKind Platform,<br>
                                            Arg *A) {<br>
     return DarwinPlatform(OSVersionArg, Platform, A);<br>
@@ -1250,33 +1254,32 @@ struct DarwinPlatform {<br>
   }<br>
   static DarwinPlatform createFromArch(llvm::Triple::O<wbr>SType OS,<br>
                                        StringRef Value) {<br>
-    DarwinPlatformKind Platform;<br>
+    return DarwinPlatform(InferredFromArc<wbr>h, getPlatformFromOS(OS), Value);<br>
+  }<br>
+<br>
+private:<br>
+  DarwinPlatform(SourceKind Kind, DarwinPlatformKind Platform, Arg *Argument)<br>
+      : Kind(Kind), Platform(Platform), Argument(Argument) {}<br>
+  DarwinPlatform(SourceKind Kind, DarwinPlatformKind Platform, StringRef Value,<br>
+                 Arg *Argument = nullptr)<br>
+      : Kind(Kind), Platform(Platform), OSVersion(Value), Argument(Argument) {}<br>
+<br>
+  static DarwinPlatformKind getPlatformFromOS(llvm::Triple<wbr>::OSType OS) {<br>
     switch (OS) {<br>
     case llvm::Triple::Darwin:<br>
     case llvm::Triple::MacOSX:<br>
-      Platform = DarwinPlatformKind::MacOS;<br>
-      break;<br>
+      return DarwinPlatformKind::MacOS;<br>
     case llvm::Triple::IOS:<br>
-      Platform = DarwinPlatformKind::IPhoneOS;<br>
-      break;<br>
+      return DarwinPlatformKind::IPhoneOS;<br>
     case llvm::Triple::TvOS:<br>
-      Platform = DarwinPlatformKind::TvOS;<br>
-      break;<br>
+      return DarwinPlatformKind::TvOS;<br>
     case llvm::Triple::WatchOS:<br>
-      Platform = DarwinPlatformKind::WatchOS;<br>
-      break;<br>
+      return DarwinPlatformKind::WatchOS;<br>
     default:<br>
       llvm_unreachable("Unable to infer Darwin variant");<br>
     }<br>
-    return DarwinPlatform(InferredFromArc<wbr>h, Platform, Value);<br>
   }<br>
<br>
-private:<br>
-  DarwinPlatform(SourceKind Kind, DarwinPlatformKind Platform, Arg *Argument)<br>
-      : Kind(Kind), Platform(Platform), Argument(Argument) {}<br>
-  DarwinPlatform(SourceKind Kind, DarwinPlatformKind Platform, StringRef Value)<br>
-      : Kind(Kind), Platform(Platform), OSVersion(Value), Argument(nullptr) {}<br>
-<br>
   SourceKind Kind;<br>
   DarwinPlatformKind Platform;<br>
   std::string OSVersion;<br>
@@ -1449,20 +1452,15 @@ inferDeploymentTargetFromArch(<wbr>DerivedArg<br>
                               const Driver &TheDriver) {<br>
   llvm::Triple::OSType OSTy = llvm::Triple::UnknownOS;<br>
<br>
-  // Set the OSTy based on -target if -arch isn't present.<br>
-  if (Args.hasArg(options::OPT_targ<wbr>et) && !Args.hasArg(options::OPT_arch<wbr>)) {<br>
-    OSTy = Triple.getOS();<br>
-  } else {<br>
-    StringRef MachOArchName = Toolchain.getMachOArchName(Arg<wbr>s);<br>
-    if (MachOArchName == "armv7" || MachOArchName == "armv7s" ||<br>
-        MachOArchName == "arm64")<br>
-      OSTy = llvm::Triple::IOS;<br>
-    else if (MachOArchName == "armv7k")<br>
-      OSTy = llvm::Triple::WatchOS;<br>
-    else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" &&<br>
-             MachOArchName != "armv7em")<br>
-      OSTy = llvm::Triple::MacOSX;<br>
-  }<br>
+  StringRef MachOArchName = Toolchain.getMachOArchName(Arg<wbr>s);<br>
+  if (MachOArchName == "armv7" || MachOArchName == "armv7s" ||<br>
+      MachOArchName == "arm64")<br>
+    OSTy = llvm::Triple::IOS;<br>
+  else if (MachOArchName == "armv7k")<br>
+    OSTy = llvm::Triple::WatchOS;<br>
+  else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" &&<br>
+           MachOArchName != "armv7em")<br>
+    OSTy = llvm::Triple::MacOSX;<br>
<br>
   if (OSTy == llvm::Triple::UnknownOS)<br>
     return None;<br>
@@ -1470,6 +1468,19 @@ inferDeploymentTargetFromArch(<wbr>DerivedArg<br>
                                         getOSVersion(OSTy, Triple, TheDriver));<br>
 }<br>
<br>
+/// Returns the deployment target that's specified using the -target option.<br>
+Optional<DarwinPlatform> getDeploymentTargetFromTargetA<wbr>rg(<br>
+    DerivedArgList &Args, const llvm::Triple &Triple, const Driver &TheDriver) {<br>
+  if (!Args.hasArg(options::OPT_tar<wbr>get))<br>
+    return None;<br>
+  if (Triple.getOS() == llvm::Triple::Darwin ||<br>
+      Triple.getOS() == llvm::Triple::UnknownOS)<br>
+    return None;<br>
+  std::string OSVersion = getOSVersion(Triple.getOS(), Triple, TheDriver);<br>
+  return DarwinPlatform::createFromTarg<wbr>et(Triple.getOS(), OSVersion,<br>
+                                          Args.getLastArg(options::OPT_t<wbr>arget));<br>
+}<br>
+<br>
 } // namespace<br>
<br>
 void Darwin::AddDeploymentTarget(De<wbr>rivedArgList &Args) const {<br>
@@ -1494,24 +1505,35 @@ void Darwin::AddDeploymentTarget(De<wbr>rived<br>
     }<br>
   }<br>
<br>
-  // The OS target can be specified using the -m<os>version-min argument.<br>
+  // The OS and the version can be specified using the -target argument.<br>
   Optional<DarwinPlatform> OSTarget =<br>
-      getDeploymentTargetFromOSVersi<wbr>onArg(Args, getDriver());<br>
-  // If no deployment target was specified on the command line, check for<br>
-  // environment defines.<br>
-  if (!OSTarget)<br>
-    OSTarget =<br>
-        getDeploymentTargetFromEnviron<wbr>mentVariables(getDriver(), getTriple());<br>
-  // If there is no command-line argument to specify the Target version and<br>
-  // no environment variable defined, see if we can set the default based<br>
-  // on -isysroot.<br>
-  if (!OSTarget)<br>
-    OSTarget = inferDeploymentTargetFromSDK(A<wbr>rgs);<br>
-  // If no OS targets have been specified, try to guess platform from -target<br>
-  // or arch name and compute the version from the triple.<br>
-  if (!OSTarget)<br>
-    OSTarget =<br>
-        inferDeploymentTargetFromArch(<wbr>Args, *this, getTriple(), getDriver());<br>
+      getDeploymentTargetFromTargetA<wbr>rg(Args, getTriple(), getDriver());<br>
+  if (OSTarget) {<br>
+    // Warn about superfluous -m<os>-version-min arg.<br>
+    Optional<DarwinPlatform> OSVersionArgTarget =<br>
+        getDeploymentTargetFromOSVersi<wbr>onArg(Args, getDriver());<br>
+    if (OSVersionArgTarget)<br>
+      getDriver().Diag(clang::diag::<wbr>warn_drv_unused_argument)<br>
+          << OSVersionArgTarget->getAsStrin<wbr>g(Args, Opts);<br>
+  } else {<br>
+    // The OS target can be specified using the -m<os>version-min argument.<br>
+    OSTarget = getDeploymentTargetFromOSVersi<wbr>onArg(Args, getDriver());<br>
+    // If no deployment target was specified on the command line, check for<br>
+    // environment defines.<br>
+    if (!OSTarget)<br>
+      OSTarget =<br>
+          getDeploymentTargetFromEnviron<wbr>mentVariables(getDriver(), getTriple());<br>
+    // If there is no command-line argument to specify the Target version and<br>
+    // no environment variable defined, see if we can set the default based<br>
+    // on -isysroot.<br>
+    if (!OSTarget)<br>
+      OSTarget = inferDeploymentTargetFromSDK(A<wbr>rgs);<br>
+    // If no OS targets have been specified, try to guess platform from -target<br>
+    // or arch name and compute the version from the triple.<br>
+    if (!OSTarget)<br>
+      OSTarget =<br>
+          inferDeploymentTargetFromArch(<wbr>Args, *this, getTriple(), getDriver());<br>
+  }<br>
<br>
   assert(OSTarget && "Unable to infer Darwin variant");<br>
   OSTarget->addOSVersionMinArgu<wbr>ment(Args, Opts);<br>
<br>
Modified: cfe/trunk/test/Driver/darwin-v<wbr>ersion.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-version.c?rev=321099&r1=321098&r2=321099&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/Driver/da<wbr>rwin-version.c?rev=321099&r1=<wbr>321098&r2=321099&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/Driver/darwin-v<wbr>ersion.c (original)<br>
+++ cfe/trunk/test/Driver/darwin-v<wbr>ersion.c Tue Dec 19 11:05:04 2017<br>
@@ -12,11 +12,15 @@<br>
 // CHECK-VERSION-IOS3: "armv6k-apple-ios3.0.0"<br>
<br>
 // RUN: env IPHONEOS_DEPLOYMENT_TARGET=11.<wbr>0 \<br>
-// RUN:   %clang -target armv7-apple-ios9.0 -c -### %s 2> %t.err<br>
+// RUN:   %clang -target armv7-apple-darwin -c -### %s 2> %t.err<br>
 // RUN:   FileCheck --input-file=%t.err --check-prefix=CHECK-VERSION-I<wbr>OS4 %s<br>
 // CHECK-VERSION-IOS4: invalid iOS deployment version 'IPHONEOS_DEPLOYMENT_TARGET=11<wbr>.0'<br>
<br>
-// RUN: %clang -target armv7-apple-ios9.0 -miphoneos-version-min=11.0 -c -### %s 2> %t.err<br>
+// RUN: %clang -target armv7-apple-ios11.0 -c -### %s 2> %t.err<br>
+// RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-VERSION-I<wbr>OS41 %s<br>
+// CHECK-VERSION-IOS41: invalid iOS deployment version '--target=armv7-apple-ios11.0'<br>
+<br>
+// RUN: %clang -target armv7-apple-darwin -miphoneos-version-min=11.0 -c -### %s 2> %t.err<br>
 // RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-VERSION-I<wbr>OS5 %s<br>
 // CHECK-VERSION-IOS5: invalid iOS deployment version '-miphoneos-version-min=11.0'<br>
<br>
@@ -25,13 +29,14 @@<br>
 // CHECK-VERSION-IOS6: invalid iOS deployment version '-mios-simulator-version-min=1<wbr>1.0'<br>
<br>
 // RUN: %clang -target armv7-apple-ios11.1 -c -### %s 2>&1 | \<br>
-// RUN: FileCheck --check-prefix=CHECK-VERSION-I<wbr>OS7 %s<br>
-// RUN: %clang -target armv7-apple-ios9 -Wno-missing-sysroot -isysroot SDKs/iPhoneOS11.0.sdk -c -### %s 2>&1 | \<br>
+// RUN: FileCheck --check-prefix=CHECK-VERSION-I<wbr>OS71 %s<br>
+// CHECK-VERSION-IOS71: invalid iOS deployment version<br>
+// RUN: %clang -target armv7-apple-darwin -Wno-missing-sysroot -isysroot SDKs/iPhoneOS11.0.sdk -c -### %s 2>&1 | \<br>
 // RUN: FileCheck --check-prefix=CHECK-VERSION-I<wbr>OS7 %s<br>
 // CHECK-VERSION-IOS7: thumbv7-apple-ios10.99.99<br>
<br>
 // RUN: env IPHONEOS_DEPLOYMENT_TARGET=11.<wbr>0 \<br>
-// RUN:   %clang -target arm64-apple-ios11.0 -c -### %s 2>&1 | \<br>
+// RUN:   %clang -target arm64-apple-darwin -c -### %s 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-I<wbr>OS8 %s<br>
 // CHECK-VERSION-IOS8: arm64-apple-ios11.0.0<br>
<br>
@@ -49,7 +54,7 @@<br>
<br>
 // RUN: %clang -target armv7-apple-ios9.0 -miphoneos-version-min=11.0 -c -Wno-invalid-ios-deployment-ta<wbr>rget -### %s 2>&1 | \<br>
 // RUN: FileCheck --check-prefix=CHECK-VERSION-I<wbr>OS12 %s<br>
-// CHECK-VERSION-IOS12: thumbv7-apple-ios11.0.0<br>
+// CHECK-VERSION-IOS12: thumbv7-apple-ios9.0.0<br>
<br>
 // RUN: %clang -target i686-apple-darwin8 -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-O<wbr>SX4 %s<br>
@@ -68,14 +73,14 @@<br>
 // CHECK-VERSION-OSX6: "i386-apple-macosx10.6.0"<br>
 // RUN: %clang -target x86_64-apple-darwin14 -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-O<wbr>SX10 %s<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.10 -c %s -### 2>&1 | \<br>
+// RUN: %clang -target x86_64-apple-darwin -mmacosx-version-min=10.10 -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-O<wbr>SX10 %s<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacos-version-min=10.10 -c %s -### 2>&1 | \<br>
+// RUN: %clang -target x86_64-apple-darwin -mmacos-version-min=10.10 -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-O<wbr>SX10 %s<br>
 // CHECK-VERSION-OSX10: "x86_64-apple-macosx10.10.0"<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min= -c %s -### 2>&1 | \<br>
+// RUN: %clang -target x86_64-apple-darwin -mmacosx-version-min= -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-M<wbr>ISSING %s<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacos-version-min= -c %s -### 2>&1 | \<br>
+// RUN: %clang -target x86_64-apple-darwin -mmacos-version-min= -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-M<wbr>ISSING %s<br>
 // CHECK-VERSION-MISSING: invalid version number<br>
 // RUN: %clang -target armv7k-apple-darwin -mwatchos-version-min=2.0 -c %s -### 2>&1 | \<br>
@@ -144,3 +149,116 @@<br>
 // RUN:   %clang -target x86_64-apple-darwin -c %s -### 2>&1 | \<br>
 // RUN:   FileCheck --check-prefix=CHECK-VERSION-I<wbr>NVALID-ENV %s<br>
 // CHECK-VERSION-INVALID-ENV: invalid version number in 'MACOSX_DEPLOYMENT_TARGET=1000<wbr>.1000'<br>
+<br>
+<br>
+<br>
+// Target can specify the OS version:<br>
+<br>
+// RUN: %clang -target x86_64-apple-macos10.11.2 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>MAC2 %s<br>
+// CHECK-VERSION-TMAC2: "x86_64-apple-macosx10.11.2"<br>
+<br>
+// RUN: %clang -target arm64-apple-ios11.1 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IOS1 %s<br>
+// CHECK-VERSION-TIOS1: "arm64-apple-ios11.1.0"<br>
+<br>
+// RUN: %clang -target arm64-apple-tvos10.3 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>TVOS1 %s<br>
+// CHECK-VERSION-TTVOS1: "arm64-apple-tvos10.3.0"<br>
+<br>
+// RUN: %clang -target armv7k-apple-watchos4.1 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>WATCHOS1 %s<br>
+// CHECK-VERSION-TWATCHOS1: "thumbv7k-apple-watchos4.1.0"<br>
+<br>
+// "darwin" always back to the -m<os>version-min and environment:<br>
+<br>
+// RUN: %clang -target x86_64-apple-darwin14 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>DARWIN-FALL1 %s<br>
+// CHECK-VERSION-TDARWIN-FALL1: "x86_64-apple-macosx10.10.0"<br>
+<br>
+// RUN: %clang -target x86_64-apple-darwin14 -miphoneos-version-min=10.1 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>DARWIN-FALL2 %s<br>
+// CHECK-VERSION-TDARWIN-FALL2: "x86_64-apple-ios10.1.0-simula<wbr>tor"<br>
+<br>
+// RUN: env IPHONEOS_DEPLOYMENT_TARGET=9.1 \<br>
+// RUN:   %clang -target arm64-apple-darwin14 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>DARWIN-FALL3 %s<br>
+// CHECK-VERSION-TDARWIN-FALL3: "arm64-apple-ios9.1.0"<br>
+<br>
+// RUN: %clang -target arm64-apple-darwin14 -isysroot SDKs/iPhoneOS11.0.sdk -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>DARWIN-FALL4 %s<br>
+// CHECK-VERSION-TDARWIN-FALL4: "arm64-apple-ios11.0.0"<br>
+<br>
+// RUN: %clang -target unknown-apple-darwin12  -arch armv7  -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>DARWIN-FALL5 %s<br>
+// CHECK-VERSION-TDARWIN-FALL5: "thumbv7-apple-ios5.0.0"<br>
+<br>
+// Warn about -m<os>-version-min when it's used with target:<br>
+<br>
+// RUN: %clang -target x86_64-apple-macos10.11.2 -mmacos-version-min=10.6 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>NO-OSV1 %s<br>
+// CHECK-VERSION-TNO-OSV1: argument unused during compilation: '-mmacosx-version-min=10.6'<br>
+<br>
+// RUN: %clang -target x86_64-apple-macos -miphoneos-version-min=9.1 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>NO-OSV2 %s<br>
+// CHECK-VERSION-TNO-OSV2: argument unused during compilation: '-miphoneos-version-min=9.1'<br>
+<br>
+// Target with OS version is not overriden by -m<os>-version-min variables:<br>
+<br>
+// RUN: %clang -target x86_64-apple-macos10.11.2 -mmacos-version-min=10.6 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IGNORE-OSV1 %s<br>
+// CHECK-VERSION-TIGNORE-OSV1: "x86_64-apple-macosx10.11.2"<br>
+<br>
+// RUN: %clang -target arm64-apple-ios11.0 -mios-version-min=9.0 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IGNORE-OSV2 %s<br>
+// CHECK-VERSION-TIGNORE-OSV2: "arm64-apple-ios11.0.0"<br>
+<br>
+// RUN: %clang -target arm64-apple-tvos11.0 -mtvos-version-min=9.0 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IGNORE-OSV3 %s<br>
+// CHECK-VERSION-TIGNORE-OSV3: "arm64-apple-tvos11.0.0"<br>
+<br>
+// RUN: %clang -target armv7k-apple-watchos3 -mwatchos-version-min=4 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IGNORE-OSV4 %s<br>
+// CHECK-VERSION-TIGNORE-OSV4: "thumbv7k-apple-watchos3.0.0"<br>
+<br>
+// Target with OS version is not overriden by environment variables:<br>
+<br>
+// RUN: env MACOSX_DEPLOYMENT_TARGET=10.1 \<br>
+// RUN:   %clang -target i386-apple-macos10.5 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>MACOS-CMD %s<br>
+// CHECK-VERSION-TMACOS-CMD: "i386-apple-macosx10.5.0"<br>
+<br>
+// RUN: env IPHONEOS_DEPLOYMENT_TARGET=10.<wbr>1 \<br>
+// RUN:   %clang -target arm64-apple-ios11 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IOS-CMD %s<br>
+// CHECK-VERSION-TIOS-CMD: "arm64-apple-ios11.0.0"<br>
+<br>
+// RUN: env TVOS_DEPLOYMENT_TARGET=8.3.1 \<br>
+// RUN:   %clang -target arm64-apple-tvos9 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>TVOS-CMD %s<br>
+// CHECK-VERSION-TTVOS-CMD: "arm64-apple-tvos9.0.0"<br>
+<br>
+// RUN: env WATCHOS_DEPLOYMENT_TARGET=2 \<br>
+// RUN:   %clang -target armv7k-apple-watchos3 -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>WATCHOS-CMD %s<br>
+// CHECK-VERSION-TWATCHOS-CMD: "thumbv7k-apple-watchos3.0.0"<br>
+<br>
+// Target with OS version is not overriden by the SDK:<br>
+<br>
+// RUN: %clang -target armv7-apple-ios9 -Wno-missing-sysroot -isysroot SDKs/iPhoneOS11.0.sdk -c -### %s 2>&1 | \<br>
+// RUN: FileCheck --check-prefix=CHECK-VERSION-T<wbr>IOS-SDK %s<br>
+// CHECK-VERSION-TIOS-SDK: thumbv7-apple-ios9<br>
+<br>
+// RUN: %clang -target armv7k-apple-watchos4 -Wno-missing-sysroot -isysroot SDKs/WatchOS3.0.sdk -c -### %s 2>&1 | \<br>
+// RUN: FileCheck --check-prefix=CHECK-VERSION-T<wbr>WATCHOS-SDK %s<br>
+// CHECK-VERSION-TWATCHOS-SDK: thumbv7k-apple-watchos4<br>
+<br>
+// RUN: %clang -target armv7-apple-tvos9 -Wno-missing-sysroot -isysroot SDKs/AppleTVOS11.0.sdk -c -### %s 2>&1 | \<br>
+// RUN: FileCheck --check-prefix=CHECK-VERSION-T<wbr>TVOS-SDK %s<br>
+// CHECK-VERSION-TTVOS-SDK: thumbv7-apple-tvos9<br>
+<br>
+// Target with OS version is not overriden by arch:<br>
+<br>
+// RUN: %clang -target uknown-apple-macos10.11.2 -arch=armv7k -c %s -### 2>&1 | \<br>
+// RUN:   FileCheck --check-prefix=CHECK-VERSION-T<wbr>IGNORE-ARCH1 %s<br>
+// CHECK-VERSION-TIGNORE-ARCH1: "unknown-apple-macosx10.11.2"<br>
<br>
Modified: cfe/trunk/test/Driver/objc-wea<wbr>k.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/objc-weak.m?rev=321099&r1=321098&r2=321099&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/Driver/ob<wbr>jc-weak.m?rev=321099&r1=321098<wbr>&r2=321099&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/Driver/objc-wea<wbr>k.m (original)<br>
+++ cfe/trunk/test/Driver/objc-wea<wbr>k.m Tue Dec 19 11:05:04 2017<br>
@@ -1,27 +1,27 @@<br>
 // Check miscellaneous Objective-C options.<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fobjc-arc -fobjc-weak 2>&1 | FileCheck %s --check-prefix ARC-WEAK<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fno-objc-weak -fobjc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-WEAK<br>
+// RUN: %clang -target x86_64-apple-macosx10.7 -S -### %s -fobjc-arc -fobjc-weak 2>&1 | FileCheck %s --check-prefix ARC-WEAK<br>
+// RUN: %clang -target x86_64-apple-macosx10.7 -S -### %s -fno-objc-weak -fobjc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-WEAK<br>
 // ARC-WEAK: -fobjc-arc<br>
 // ARC-WEAK: -fobjc-weak<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fobjc-arc -fno-objc-weak 2>&1 | FileCheck %s --check-prefix ARC-NO-WEAK<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fobjc-weak -fno-objc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-NO-WEAK<br>
+// RUN: %clang -target x86_64-apple-macos10.7 -S -### %s -fobjc-arc -fno-objc-weak 2>&1 | FileCheck %s --check-prefix ARC-NO-WEAK<br>
+// RUN: %clang -target x86_64-apple-macos10.7 -S -### %s -fobjc-weak -fno-objc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-NO-WEAK<br>
 // ARC-NO-WEAK: -fobjc-arc<br>
 // ARC-NO-WEAK: -fno-objc-weak<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.5 -S -### %s -fobjc-arc -fobjc-weak 2>&1 | FileCheck %s --check-prefix ARC-WEAK-NOTSUPPORTED<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.5 -S -### %s -fno-objc-weak -fobjc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-WEAK-NOTSUPPORTED<br>
+// RUN: %clang -target x86_64-apple-macosx10.5 -S -### %s -fobjc-arc -fobjc-weak 2>&1 | FileCheck %s --check-prefix ARC-WEAK-NOTSUPPORTED<br>
+// RUN: %clang -target x86_64-apple-macosx10.5 -S -### %s -fno-objc-weak -fobjc-weak -fobjc-arc  2>&1 | FileCheck %s --check-prefix ARC-WEAK-NOTSUPPORTED<br>
 // ARC-WEAK-NOTSUPPORTED: error: -fobjc-weak is not supported on the current deployment target<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fno-objc-weak -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK<br>
+// RUN: %clang -target x86_64-apple-macos10.7 -S -### %s -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK<br>
+// RUN: %clang -target x86_64-apple-macos10.7 -S -### %s -fno-objc-weak -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK<br>
 // MRC-WEAK: -fobjc-weak<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fno-objc-weak 2>&1 | FileCheck %s --check-prefix MRC-NO-WEAK<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.7 -S -### %s -fobjc-weak -fno-objc-weak 2>&1 | FileCheck %s --check-prefix MRC-NO-WEAK<br>
+// RUN: %clang -target x86_64-apple-macosx10.7 -S -### %s -fno-objc-weak 2>&1 | FileCheck %s --check-prefix MRC-NO-WEAK<br>
+// RUN: %clang -target x86_64-apple-macosx10.7 -S -### %s -fobjc-weak -fno-objc-weak 2>&1 | FileCheck %s --check-prefix MRC-NO-WEAK<br>
 // MRC-NO-WEAK: -fno-objc-weak<br>
<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.5 -S -### %s -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK-NOTSUPPORTED<br>
-// RUN: %clang -target x86_64-apple-macosx -mmacosx-version-min=10.5 -S -### %s -fno-objc-weak -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK-NOTSUPPORTED<br>
+// RUN: %clang -target x86_64-apple-macosx10.5 -S -### %s -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK-NOTSUPPORTED<br>
+// RUN: %clang -target x86_64-apple-macosx10.5 -S -### %s -fno-objc-weak -fobjc-weak 2>&1 | FileCheck %s --check-prefix MRC-WEAK-NOTSUPPORTED<br>
 // MRC-WEAK-NOTSUPPORTED: error: -fobjc-weak is not supported on the current deployment target<br>
<br>
Modified: cfe/trunk/test/Driver/pic.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pic.c?rev=321099&r1=321098&r2=321099&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/Driver/pi<wbr>c.c?rev=321099&r1=321098&r2=32<wbr>1099&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/Driver/pic.c (original)<br>
+++ cfe/trunk/test/Driver/pic.c Tue Dec 19 11:05:04 2017<br>
@@ -221,19 +221,19 @@<br>
 //<br>
 // Checks for ARM+Apple+IOS including -fapple-kext, -mkernel, and iphoneos<br>
 // version boundaries.<br>
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -### 2>&1 \<br>
+// RUN: %clang -c %s -target armv7-apple-ios6 -fapple-kext -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2<br>
-// RUN: %clang -c %s -target armv7-apple-ios -mkernel -miphoneos-version-min=6.0.0 -### 2>&1 \<br>
+// RUN: %clang -c %s -target armv7-apple-ios6 -mkernel -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2<br>
-// RUN: %clang -c %s -target arm64-apple-ios -mkernel -miphoneos-version-min=7.0.0 -### 2>&1 \<br>
+// RUN: %clang -c %s -target arm64-apple-ios7 -mkernel -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2<br>
-// RUN: %clang -x assembler -c %s -target arm64-apple-ios -mkernel -miphoneos-version-min=7.0.0 -no-integrated-as -### 2>&1 \<br>
+// RUN: %clang -x assembler -c %s -target arm64-apple-ios7 -mkernel -no-integrated-as -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-STATIC<br>
-// RUN: %clang -c %s -target armv7k-apple-watchos -fapple-kext -mwatchos-version-min=1.0.0 -### 2>&1 \<br>
+// RUN: %clang -c %s -target armv7k-apple-watchos1 -fapple-kext -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC2<br>
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=5.0.0 -### 2>&1 \<br>
+// RUN: %clang -c %s -target armv7-apple-ios5 -fapple-kext -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC<br>
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -static -### 2>&1 \<br>
+// RUN: %clang -c %s -target armv7-apple-ios6 -fapple-kext -static -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC<br>
 // RUN: %clang -c %s -target armv7-apple-unknown-macho -static -### 2>&1 \<br>
 // RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC<br>
<br>
Modified: cfe/trunk/test/Driver/unavaila<wbr>ble_aligned_allocation.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/unavailable_aligned_allocation.cpp?rev=321099&r1=321098&r2=321099&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/cfe/trunk/test/Driver/un<wbr>available_aligned_allocation.<wbr>cpp?rev=321099&r1=321098&r2=<wbr>321099&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/test/Driver/unavaila<wbr>ble_aligned_allocation.cpp (original)<br>
+++ cfe/trunk/test/Driver/unavaila<wbr>ble_aligned_allocation.cpp Tue Dec 19 11:05:04 2017<br>
@@ -10,15 +10,15 @@<br>
 // RUN: %clang -target thumbv7-apple-watchos3 -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=UNAVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.13 -mios-simulator-version-min=10 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mios-simulator-version-min=10 \<br>
 // RUN:  -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=UNAVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.13 -mtvos-simulator-version-min=1<wbr>0 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mtvos-simulator-version-min=1<wbr>0 \<br>
 // RUN: -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=UNAVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.13 -mwatchos-simulator-version-mi<wbr>n=3 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mwatchos-simulator-version-mi<wbr>n=3 \<br>
 // RUN: -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=UNAVAILABLE<br>
 //<br>
@@ -39,15 +39,15 @@<br>
 // RUN: %clang -target x86_64-unknown-linux-gnu -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=AVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.12 -mios-simulator-version-min=11 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mios-simulator-version-min=11 \<br>
 // RUN:  -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=AVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.12 -mtvos-simulator-version-min=1<wbr>1 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mtvos-simulator-version-min=1<wbr>1 \<br>
 // RUN: -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=AVAILABLE<br>
 //<br>
-// RUN: %clang -target x86_64-apple-macosx10.12 -mwatchos-simulator-version-mi<wbr>n=4 \<br>
+// RUN: %clang -target x86_64-apple-darwin -mwatchos-simulator-version-mi<wbr>n=4 \<br>
 // RUN: -c -### %s 2>&1 \<br>
 // RUN:   | FileCheck %s -check-prefix=AVAILABLE<br>
 //<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div></div></div>-- <br><div class="m_-3719606292721830339gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Martin Böhme</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333333333333px;font-family:Arial;color:rgb(102,102,102);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Software Engineer</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333333333333px;font-family:Arial;color:rgb(102,102,102);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><a href="mailto:mboehme@google.com" target="_blank">mboehme@google.com</a></span><br></p><span style="font-size:13.3333333333333px;font-family:Arial;color:rgb(102,102,102);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><img src="https://lh3.googleusercontent.com/jArLagMFiBykGEq2mtMjIS9RO3ydtGbI1KRMmdY7daBuMP4HQbM7p92vdv8yolHBV9sE4YXu7ORFjsy6mcF6LGJOjQhqkd4PrG43u1U2toF3BQIitx8YMjbU9hqX9u3U8MU=s1600" width="100px;" height="58px;" style="border:none"></span></span><br><div><div style="font-size:13px"><span style="font-family:Arial,Verdana,sans-serif"><font color="#666666">Google Germany GmbH</font></span></div><div><div style="font-size:13px;font-family:Arial,Verdana,sans-serif"><font color="#666666"><a href="https://maps.google.com/?q=Erika-Mann-Stra%C3%9Fe+33&entry=gmail&source=g">Erika-Mann-Straße 33</a></font></div><div style="font-size:13px;font-family:Arial,Verdana,sans-serif"><font color="#666666">80363 München<br></font></div><div style="font-size:13px;font-family:Arial,Verdana,sans-serif"><font color="#666666"><br></font></div><div style="font-family:Arial,Verdana,sans-serif"><span><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Geschäftsführer: Paul Manicle, Halimah DeLaine Prado</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Registergericht und -nummer: Hamburg, HRB 86891</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Sitz der Gesellschaft: Hamburg</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank.</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">       </span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.6666666666667px;font-family:Arial;color:rgb(183,183,183);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks.</span></p></span></div></div></div></div></div></div></div></div></div></div></div>
</div>
</blockquote></div><br></div>