From bd62d2f34949149b658700ca31dcd9a4430cc6eb Mon Sep 17 00:00:00 2001 From: Bob Wilson <bob.wilson@apple.com> Date: Sat, 28 Dec 2013 05:26:14 +0000 Subject: [PATCH] Propagate "-arch x86_64h" setting to the linker. <rdar://problem/15711488> This is a follow-up to r194907, which added a new -arch setting to make it easier to specify AVX2 targets. The "-arch x86_64h" option needs to be passed on to the linker, but it was getting canonicalized to x86_64 by the code in getArchTypeForDarwinArchName. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198096 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Driver.cpp | 19 +++++++++++++------ test/Driver/darwin-ld.c | 6 +++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 5ccd0412a8e..3174def74f4 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1868,17 +1868,24 @@ static llvm::Triple computeTargetTriple(StringRef DefaultTargetTriple, if (Target.isOSDarwin()) { // If an explict Darwin arch name is given, that trumps all. if (!DarwinArchName.empty()) { - Target.setArch( - tools::darwin::getArchTypeForDarwinArchName(DarwinArchName)); + if (DarwinArchName == "x86_64h") + Target.setArchName(DarwinArchName); + else + Target.setArch( + tools::darwin::getArchTypeForDarwinArchName(DarwinArchName)); return Target; } // Handle the Darwin '-arch' flag. if (Arg *A = Args.getLastArg(options::OPT_arch)) { - llvm::Triple::ArchType DarwinArch - = tools::darwin::getArchTypeForDarwinArchName(A->getValue()); - if (DarwinArch != llvm::Triple::UnknownArch) - Target.setArch(DarwinArch); + if (StringRef(A->getValue()) == "x86_64h") + Target.setArchName(DarwinArchName); + else { + llvm::Triple::ArchType DarwinArch + = tools::darwin::getArchTypeForDarwinArchName(A->getValue()); + if (DarwinArch != llvm::Triple::UnknownArch) + Target.setArch(DarwinArch); + } } } diff --git a/test/Driver/darwin-ld.c b/test/Driver/darwin-ld.c index d6c5170496b..a3f9a7f0cd1 100644 --- a/test/Driver/darwin-ld.c +++ b/test/Driver/darwin-ld.c @@ -143,4 +143,8 @@ // LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}} // LINK_EXPORT_DYNAMIC: "-export_dynamic" - +// RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log +// RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log +// +// LINK_X86_64H_ARCH: {{ld(.exe)?"}} +// LINK_X86_64H_ARCH: "x86_64h" -- GitLab