diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-01-25 22:35:08 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-01-25 22:35:08 +0000 |
commit | 4e29505a95072cd0d12ee9b4fc23cd32faabc219 (patch) | |
tree | 793c6473f7e6db2cadf89431a8fc81bf71fb7c7e /clang/lib/Driver/Tools.cpp | |
parent | 97a45371387942220777cc20363c02cab870c751 (diff) | |
download | bcm5719-llvm-4e29505a95072cd0d12ee9b4fc23cd32faabc219.tar.gz bcm5719-llvm-4e29505a95072cd0d12ee9b4fc23cd32faabc219.zip |
Driver: Fix fallback to gcc to -c instead of -S if trying to generate an LLVM bc
file.
llvm-svn: 94463
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index afb22a23676..29dd3f55c40 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1213,7 +1213,7 @@ void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA, } } - RenderExtraToolArgs(CmdArgs); + RenderExtraToolArgs(JA, CmdArgs); // If using a driver driver, force the arch. const std::string &Arch = getToolChain().getArchName(); @@ -1291,23 +1291,32 @@ void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA, Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); } -void gcc::Preprocess::RenderExtraToolArgs(ArgStringList &CmdArgs) const { +void gcc::Preprocess::RenderExtraToolArgs(const JobAction &JA, + ArgStringList &CmdArgs) const { CmdArgs.push_back("-E"); } -void gcc::Precompile::RenderExtraToolArgs(ArgStringList &CmdArgs) const { +void gcc::Precompile::RenderExtraToolArgs(const JobAction &JA, + ArgStringList &CmdArgs) const { // The type is good enough. } -void gcc::Compile::RenderExtraToolArgs(ArgStringList &CmdArgs) const { - CmdArgs.push_back("-S"); +void gcc::Compile::RenderExtraToolArgs(const JobAction &JA, + ArgStringList &CmdArgs) const { + // If -flto, etc. are present then make sure not to force assembly output. + if (JA.getType() == types::TY_LLVMBC) + CmdArgs.push_back("-c"); + else + CmdArgs.push_back("-S"); } -void gcc::Assemble::RenderExtraToolArgs(ArgStringList &CmdArgs) const { +void gcc::Assemble::RenderExtraToolArgs(const JobAction &JA, + ArgStringList &CmdArgs) const { CmdArgs.push_back("-c"); } -void gcc::Link::RenderExtraToolArgs(ArgStringList &CmdArgs) const { +void gcc::Link::RenderExtraToolArgs(const JobAction &JA, + ArgStringList &CmdArgs) const { // The types are (hopefully) good enough. } |