diff options
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 19 | ||||
| -rw-r--r-- | clang/test/Driver/darwin-ld.c | 6 |
2 files changed, 18 insertions, 7 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 5ccd0412a8e..3174def74f4 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/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/clang/test/Driver/darwin-ld.c b/clang/test/Driver/darwin-ld.c index d6c5170496b..a3f9a7f0cd1 100644 --- a/clang/test/Driver/darwin-ld.c +++ b/clang/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" |

