From: Douglas Katzman Date: Fri, 12 Jun 2015 15:45:21 +0000 (+0000) Subject: Allow ToolChain to decide if Clang is not the right C compiler. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9935bd17617e26c8df84c675a5222d42b05e4565;p=clang Allow ToolChain to decide if Clang is not the right C compiler. Removed comment in Driver::ShouldUseClangCompiler implying that there was an opt-out ability at that point - there isn't. Differential Revision: http://reviews.llvm.org/D10246 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239608 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h index 560df19e25..4471f21f49 100644 --- a/include/clang/Driver/ToolChain.h +++ b/include/clang/Driver/ToolChain.h @@ -164,7 +164,10 @@ public: } /// Choose a tool to use to handle the action \p JA. - Tool *SelectTool(const JobAction &JA) const; + /// + /// This can be overridden when a particular ToolChain needs to use + /// a C compiler other than Clang. + virtual Tool *SelectTool(const JobAction &JA) const; // Helper methods diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index ec289875a8..5b34f9842d 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -2117,13 +2117,12 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, } bool Driver::ShouldUseClangCompiler(const JobAction &JA) const { - // Check if user requested no clang, or clang doesn't understand this type (we - // only handle single inputs for now). + // Say "no" if there is not exactly one input of a type clang understands. if (JA.size() != 1 || !types::isAcceptedByClang((*JA.begin())->getType())) return false; - // Otherwise make sure this is an action clang understands. + // And say "no" if this is not a kind of action clang understands. if (!isa(JA) && !isa(JA) && !isa(JA) && !isa(JA)) return false;