forked from OSchip/llvm-project
Move ToolChain::ShouldUseClangCompiler to
Driver::ShouldUseClangCompiler. - No functionality change. llvm-svn: 67639
This commit is contained in:
parent
306813cbbb
commit
8fa879d39f
|
@ -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;
|
||||
|
||||
/// @}
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<PreprocessJobAction>(JA)) {
|
||||
if (CCCNoClangCPP)
|
||||
return false;
|
||||
} else if (!isa<PrecompileJobAction>(JA) && !isa<CompileJobAction>(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;
|
||||
}
|
||||
|
|
|
@ -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<PreprocessJobAction>(JA)) {
|
||||
if (Host.getDriver().CCCNoClangCPP)
|
||||
return false;
|
||||
} else if (!isa<PrecompileJobAction>(JA) && !isa<CompileJobAction>(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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue