Author: steven_wu Date: Mon Jul 2 21:15:49 2018 New Revision: 336168 URL: http://llvm.org/viewvc/llvm-project?rev=336168&view=rev Log: [Driver][Darwin] Use Host Triple to infer target os version
Summary: When clang required to infer target os version from --target option and the os version is not specified in targets, check the host triple. If the host and target are both macOS, use host triple to infer target os version. rdar://problem/41651999 Reviewers: arphaman, dexonsmith Reviewed By: arphaman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D48849 Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp cfe/trunk/test/Driver/clang-g-opts.c cfe/trunk/test/Driver/target-triple-deployment.c Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.cpp?rev=336168&r1=336167&r2=336168&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Darwin.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Darwin.cpp Mon Jul 2 21:15:49 2018 @@ -1472,10 +1472,16 @@ Optional<DarwinPlatform> inferDeployment std::string getOSVersion(llvm::Triple::OSType OS, const llvm::Triple &Triple, const Driver &TheDriver) { unsigned Major, Minor, Micro; + llvm::Triple SystemTriple(llvm::sys::getProcessTriple()); switch (OS) { case llvm::Triple::Darwin: case llvm::Triple::MacOSX: - if (!Triple.getMacOSXVersion(Major, Minor, Micro)) + // If there is no version specified on triple, and both host and target are + // macos, use the host triple to infer OS version. + if (Triple.isMacOSX() && SystemTriple.isMacOSX() && + !Triple.getOSMajorVersion()) + SystemTriple.getMacOSXVersion(Major, Minor, Micro); + else if (!Triple.getMacOSXVersion(Major, Minor, Micro)) TheDriver.Diag(diag::err_drv_invalid_darwin_version) << Triple.getOSName(); break; Modified: cfe/trunk/test/Driver/clang-g-opts.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang-g-opts.c?rev=336168&r1=336167&r2=336168&view=diff ============================================================================== --- cfe/trunk/test/Driver/clang-g-opts.c (original) +++ cfe/trunk/test/Driver/clang-g-opts.c Mon Jul 2 21:15:49 2018 @@ -3,7 +3,7 @@ // RUN: | FileCheck --check-prefix=CHECK-WITH-G %s // Assert that the toolchains which should default to a lower Dwarf version do so. -// RUN: %clang -### -S %s -g -target x86_64-apple-darwin 2>&1 \ +// RUN: %clang -### -S %s -g -target x86_64-apple-darwin8 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s // RUN: %clang -### -S %s -g -target i686-pc-openbsd 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s @@ -21,7 +21,7 @@ // // RUN: %clang -### -S %s -g0 -g -target x86_64-linux-gnu 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-WITH-G %s -// RUN: %clang -### -S %s -g0 -g -target x86_64-apple-darwin 2>&1 \ +// RUN: %clang -### -S %s -g0 -g -target x86_64-apple-darwin8 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-WITH-G-STANDALONE %s // RUN: %clang -### -S %s -g0 -g -target i686-pc-openbsd 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s Modified: cfe/trunk/test/Driver/target-triple-deployment.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/target-triple-deployment.c?rev=336168&r1=336167&r2=336168&view=diff ============================================================================== --- cfe/trunk/test/Driver/target-triple-deployment.c (original) +++ cfe/trunk/test/Driver/target-triple-deployment.c Mon Jul 2 21:15:49 2018 @@ -1,5 +1,5 @@ // RUN: touch %t.o -// RUN: %clang -target x86_64-apple-macosx -### %t.o 2> %t.log +// RUN: %clang -target x86_64-apple-macosx10.4 -### %t.o 2> %t.log // RUN: %clang -target x86_64-apple-darwin9 -### %t.o 2>> %t.log // RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log // _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits