From 8fa879d39fb218bc30ecf8c2ebdb50e8d1c9ab50 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 24 Mar 2009 18:57:02 +0000 Subject: [PATCH] Move ToolChain::ShouldUseClangCompiler to Driver::ShouldUseClangCompiler. - No functionality change. llvm-svn: 67639 --- clang/include/clang/Driver/Driver.h | 6 ++++++ clang/include/clang/Driver/ToolChain.h | 4 ---- clang/lib/Driver/Driver.cpp | 27 +++++++++++++++++++++++++ clang/lib/Driver/ToolChain.cpp | 28 -------------------------- clang/lib/Driver/ToolChains.cpp | 4 ++-- 5 files changed, 35 insertions(+), 34 deletions(-) diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index 7a52498364b0..d1df4d87514c 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -77,6 +77,7 @@ public: /// Only print tool bindings, don't build any jobs. bool CCCPrintBindings : 1; +private: /// Don't use clang for any tasks. bool CCCNoClang : 1; @@ -227,6 +228,11 @@ public: /// host triple. const HostInfo *GetHostInfo(const char *HostTriple) const; + /// ShouldUseClangCompilar - Should the clang compiler be used to + /// handle this action. + bool ShouldUseClangCompiler(const Compilation &C, const JobAction &JA, + const std::string &ArchName) const; + /// @} }; diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index f917eb6da496..99d9bcb3cb5e 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -76,10 +76,6 @@ public: llvm::sys::Path GetFilePath(const Compilation &C, const char *Name) const; llvm::sys::Path GetProgramPath(const Compilation &C, const char *Name) const; - /// ShouldUseClangCompilar - Should the clang compiler be used to - /// handle this action. - bool ShouldUseClangCompiler(const Compilation &C, const JobAction &JA) const; - // Platform defaults information /// IsMathErrnoDefault - Does this tool chain set -fmath-errno by diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index df71c97215af..1e10ac5c8f9d 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -981,3 +981,30 @@ const HostInfo *Driver::GetHostInfo(const char *Triple) const { return createUnknownHostInfo(*this, Arch.c_str(), Platform.c_str(), OS.c_str()); } + +bool Driver::ShouldUseClangCompiler(const Compilation &C, const JobAction &JA, + const std::string &ArchName) const { + // Check if user requested no clang, or clang doesn't understand + // this type (we only handle single inputs for now). + if (CCCNoClang || JA.size() != 1 || + !types::isAcceptedByClang((*JA.begin())->getType())) + return false; + + // Otherwise make sure this is an action clang undertands. + if (isa(JA)) { + if (CCCNoClangCPP) + return false; + } else if (!isa(JA) && !isa(JA)) + return false; + + // Avoid CXX if the user requested. + if (CCCNoClangCXX && types::isCXX((*JA.begin())->getType())) + return false; + + // Finally, don't use clang if this isn't one of the user specified + // archs to build. + if (!CCCClangArchs.empty() && !CCCClangArchs.count(ArchName)) + return false; + + return true; +} diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 87b169e7e9c5..aed58c94221a 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -33,31 +33,3 @@ llvm::sys::Path ToolChain::GetProgramPath(const Compilation &C, const char *Name) const { return Host.getDriver().GetProgramPath(Name, *this); } - -bool ToolChain::ShouldUseClangCompiler(const Compilation &C, - const JobAction &JA) const { - // Check if user requested no clang, or clang doesn't understand - // this type (we only handle single inputs for now). - if (Host.getDriver().CCCNoClang || JA.size() != 1 || - !types::isAcceptedByClang((*JA.begin())->getType())) - return false; - - // Otherwise make sure this is an action clang undertands. - if (isa(JA)) { - if (Host.getDriver().CCCNoClangCPP) - return false; - } else if (!isa(JA) && !isa(JA)) - return false; - - // Avoid CXX if the user requested. - if (Host.getDriver().CCCNoClangCXX && types::isCXX((*JA.begin())->getType())) - return false; - - // Finally, don't use clang if this isn't one of the user specified - // archs to build. - if (!Host.getDriver().CCCClangArchs.empty() && - !Host.getDriver().CCCClangArchs.count(getArchName())) - return false; - - return true; -} diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index d4e8e93e2aa6..c8df6c09e59b 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -91,7 +91,7 @@ Darwin_X86::~Darwin_X86() { Tool &Darwin_X86::SelectTool(const Compilation &C, const JobAction &JA) const { Action::ActionClass Key; - if (ShouldUseClangCompiler(C, JA)) + if (getHost().getDriver().ShouldUseClangCompiler(C, JA, getArchName())) Key = Action::AnalyzeJobClass; else Key = JA.getKind(); @@ -172,7 +172,7 @@ Generic_GCC::~Generic_GCC() { Tool &Generic_GCC::SelectTool(const Compilation &C, const JobAction &JA) const { Action::ActionClass Key; - if (ShouldUseClangCompiler(C, JA)) + if (getHost().getDriver().ShouldUseClangCompiler(C, JA, getArchName())) Key = Action::AnalyzeJobClass; else Key = JA.getKind();