diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-09-20 20:44:06 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-09-20 20:44:06 +0000 |
commit | 61ab80a8b35e6fe9363e8ef1b3d27209b0e89349 (patch) | |
tree | 9c3533522fd4d7f853bfcdd7d07a54832bcc7e95 /lib/Driver/ToolChain.cpp | |
parent | c11030ea936f6952deb5a1423ce1648173cd417e (diff) |
[driver] Default to arm mode when using the integrated assembler.
rdar://10125227
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140179 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/ToolChain.cpp')
-rw-r--r-- | lib/Driver/ToolChain.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp index d83fd9af25..074f1a3481 100644 --- a/lib/Driver/ToolChain.cpp +++ b/lib/Driver/ToolChain.cpp @@ -169,7 +169,8 @@ static const char *getLLVMArchSuffixForARM(StringRef CPU) { return ""; } -std::string ToolChain::ComputeLLVMTriple(const ArgList &Args) const { +std::string ToolChain::ComputeLLVMTriple(const ArgList &Args, + types::ID InputType) const { switch (getTriple().getArch()) { default: return getTripleString(); @@ -187,7 +188,10 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args) const { bool ThumbDefault = (Suffix == "v7" && getTriple().getOS() == llvm::Triple::Darwin); std::string ArchName = "arm"; - if (Args.hasFlag(options::OPT_mthumb, options::OPT_mno_thumb, ThumbDefault)) + + // Assembly files should start in ARM mode. + if (InputType != types::TY_PP_Asm && + Args.hasFlag(options::OPT_mthumb, options::OPT_mno_thumb, ThumbDefault)) ArchName = "thumb"; Triple.setArchName(ArchName + Suffix.str()); @@ -196,7 +200,8 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args) const { } } -std::string ToolChain::ComputeEffectiveClangTriple(const ArgList &Args) const { +std::string ToolChain::ComputeEffectiveClangTriple(const ArgList &Args, + types::ID InputType) const { // Diagnose use of Darwin OS deployment target arguments on non-Darwin. if (Arg *A = Args.getLastArg(options::OPT_mmacosx_version_min_EQ, options::OPT_miphoneos_version_min_EQ, @@ -204,7 +209,7 @@ std::string ToolChain::ComputeEffectiveClangTriple(const ArgList &Args) const { getDriver().Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); - return ComputeLLVMTriple(Args); + return ComputeLLVMTriple(Args, InputType); } ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{ |