diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp b/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp index e6a1bc9685de..d40bb951e50a 100644 --- a/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp +++ b/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp @@ -305,12 +305,17 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args,      // Thumb2 is the default for V7 on Darwin.      //      // FIXME: Thumb should just be another -target-feaure, not in the triple. +    StringRef MCPU, MArch; +    if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) +      MCPU = A->getValue(); +    if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) +      MArch = A->getValue();      std::string CPU = Triple.isOSBinFormatMachO() -      ? tools::arm::getARMCPUForMArch(Args, Triple) -      : tools::arm::getARMTargetCPU(Args, Triple); +      ? tools::arm::getARMCPUForMArch(MArch, Triple) +      : tools::arm::getARMTargetCPU(MCPU, MArch, Triple);      StringRef Suffix =         tools::arm::getLLVMArchSuffixForARM(CPU, -                                          tools::arm::getARMArch(Args, Triple)); +                                          tools::arm::getARMArch(MArch, Triple));      bool ThumbDefault = Suffix.startswith("v6m") || Suffix.startswith("v7m") ||        Suffix.startswith("v7em") ||        (Suffix.startswith("v7") && getTriple().isOSBinFormatMachO());  | 
