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 | d3a0f954a389c0df3643085fcc63a282f1fc2ea7 (patch) | |
tree | d10388e71f15781405a979612445b0043d01ec2e /clang/lib/Driver/ToolChain.cpp | |
parent | 2b37261fd61466dcf3c2a5adc51ad8e8d693a1ad (diff) | |
download | bcm5719-llvm-d3a0f954a389c0df3643085fcc63a282f1fc2ea7.tar.gz bcm5719-llvm-d3a0f954a389c0df3643085fcc63a282f1fc2ea7.zip |
[driver] Default to arm mode when using the integrated assembler.
rdar://10125227
llvm-svn: 140179
Diffstat (limited to 'clang/lib/Driver/ToolChain.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChain.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index d83fd9af258..074f1a34813 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/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{ |