aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/WindowsToolChain.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-03-18 20:48:54 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-03-18 20:48:54 +0000
commit5b222059399ec9cccba7a393dc470adfb8a3db0f (patch)
tree24d77e0536f9541cfbe3e9552da674ba2474ea95 /lib/Driver/WindowsToolChain.cpp
parent4b94f4daa13118441b4cf53b7e57cae1b48dc427 (diff)
Centralize the recording of which tools have been constructed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177319 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/WindowsToolChain.cpp')
-rw-r--r--lib/Driver/WindowsToolChain.cpp24
1 files changed, 6 insertions, 18 deletions
diff --git a/lib/Driver/WindowsToolChain.cpp b/lib/Driver/WindowsToolChain.cpp
index 60781ca6bb..985039ec09 100644
--- a/lib/Driver/WindowsToolChain.cpp
+++ b/lib/Driver/WindowsToolChain.cpp
@@ -36,18 +36,8 @@ Windows::Windows(const Driver &D, const llvm::Triple& Triple,
: ToolChain(D, Triple, Args) {
}
-Tool &Windows::SelectTool(const JobAction &JA) const {
- Action::ActionClass Key;
- if (getDriver().ShouldUseClangCompiler(JA))
- Key = Action::AnalyzeJobClass;
- else
- Key = JA.getKind();
-
- Tool *&T = Tools[Key];
- if (T)
- return *T;
-
- switch (Key) {
+Tool *Windows::constructTool(Action::ActionClass AC) const {
+ switch (AC) {
case Action::InputClass:
case Action::BindArchClass:
case Action::LipoJobClass:
@@ -58,19 +48,17 @@ Tool &Windows::SelectTool(const JobAction &JA) const {
case Action::AnalyzeJobClass:
case Action::MigrateJobClass:
case Action::CompileJobClass:
- T = new tools::Clang(*this); break;
+ return new tools::Clang(*this);
case Action::AssembleJobClass:
if (!useIntegratedAs() &&
getTriple().getEnvironment() == llvm::Triple::MachO)
- T = new tools::darwin::Assemble(*this);
+ return new tools::darwin::Assemble(*this);
else
- T = new tools::ClangAs(*this);
+ return new tools::ClangAs(*this);
break;
case Action::LinkJobClass:
- T = new tools::visualstudio::Link(*this); break;
+ return new tools::visualstudio::Link(*this);
}
-
- return *T;
}
bool Windows::IsIntegratedAssemblerDefault() const {