diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-09-08 23:37:19 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-09-08 23:37:19 +0000 |
commit | 1ef3f2aa3ac0c68f8ac7d91544bf76ab919557b6 (patch) | |
tree | 81ad8eaa6a43f595b2a9ea0353d7abc48ab49e71 /clang/lib/Driver/Driver.cpp | |
parent | b5c741a427829c30d7df87a6f1b15df5b6f02cba (diff) | |
download | bcm5719-llvm-1ef3f2aa3ac0c68f8ac7d91544bf76ab919557b6.tar.gz bcm5719-llvm-1ef3f2aa3ac0c68f8ac7d91544bf76ab919557b6.zip |
Rename HostInfo::getToolChain to HostInfo::CreateToolChain, and don't recreate
the default tool chain when binding the default architecture.
llvm-svn: 81279
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index c817cde4e9e..f58c8829ebb 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -207,7 +207,7 @@ Compilation *Driver::BuildCompilation(int argc, const char **argv) { Host = GetHostInfo(HostTriple); // The compilation takes ownership of Args. - Compilation *C = new Compilation(*this, *Host->getToolChain(*Args), Args); + Compilation *C = new Compilation(*this, *Host->CreateToolChain(*Args), Args); // FIXME: This behavior shouldn't be here. if (CCCPrintOptions) { @@ -1017,19 +1017,14 @@ void Driver::BuildJobsForAction(Compilation &C, } if (const BindArchAction *BAA = dyn_cast<BindArchAction>(A)) { - const char *ArchName = BAA->getArchName(); + const ToolChain *TC = &C.getDefaultToolChain(); + std::string Arch; - if (!ArchName) { - Arch = C.getDefaultToolChain().getArchName(); - ArchName = Arch.c_str(); - } - BuildJobsForAction(C, - *BAA->begin(), - Host->getToolChain(C.getArgs(), ArchName), - CanAcceptPipe, - AtTopLevel, - LinkingOutput, - Result); + if (BAA->getArchName()) + TC = Host->CreateToolChain(C.getArgs(), BAA->getArchName()); + + BuildJobsForAction(C, *BAA->begin(), TC, CanAcceptPipe, AtTopLevel, + LinkingOutput, Result); return; } |