diff options
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 19 |
1 files changed, 13 insertions, 6 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); + } } } |

