[clang-tools-extra] r201340 - Clang-tidy: don't create ASTConsumers not needed for the set of checks we perform.
Alexander Kornienko
alexfh at google.com
Thu Feb 13 08:10:48 PST 2014
Author: alexfh
Date: Thu Feb 13 10:10:47 2014
New Revision: 201340
URL: http://llvm.org/viewvc/llvm-project?rev=201340&view=rev
Log:
Clang-tidy: don't create ASTConsumers not needed for the set of checks we perform.
Summary:
This doesn't have any significant effect on the performance, but it
looks like a good thing to do.
Reviewers: djasper, klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2763
Modified:
clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp
clang-tools-extra/trunk/clang-tidy/ClangTidyModule.h
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp?rev=201340&r1=201339&r2=201340&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidy.cpp Thu Feb 13 10:10:47 2014
@@ -152,18 +152,24 @@ clang::ASTConsumer *ClangTidyASTConsumer
I != E; ++I)
(*I)->registerPPCallbacks(Compiler);
+ SmallVector<ASTConsumer *, 2> Consumers;
+ if (CheckFactories->empty())
+ Consumers.push_back(Finder.newASTConsumer());
+
AnalyzerOptionsRef Options = Compiler.getAnalyzerOpts();
Options->CheckersControlList = getCheckersControlList();
- Options->AnalysisStoreOpt = RegionStoreModel;
- Options->AnalysisDiagOpt = PD_NONE;
- Options->AnalyzeNestedBlocks = true;
- Options->eagerlyAssumeBinOpBifurcation = true;
- ento::AnalysisASTConsumer *AnalysisConsumer = ento::CreateAnalysisConsumer(
- Compiler.getPreprocessor(), Compiler.getFrontendOpts().OutputFile,
- Options, Compiler.getFrontendOpts().Plugins);
- AnalysisConsumer->AddDiagnosticConsumer(
- new AnalyzerDiagnosticConsumer(Context));
- ASTConsumer *Consumers[] = { Finder.newASTConsumer(), AnalysisConsumer };
+ if (!Options->CheckersControlList.empty()) {
+ Options->AnalysisStoreOpt = RegionStoreModel;
+ Options->AnalysisDiagOpt = PD_NONE;
+ Options->AnalyzeNestedBlocks = true;
+ Options->eagerlyAssumeBinOpBifurcation = true;
+ ento::AnalysisASTConsumer *AnalysisConsumer = ento::CreateAnalysisConsumer(
+ Compiler.getPreprocessor(), Compiler.getFrontendOpts().OutputFile,
+ Options, Compiler.getFrontendOpts().Plugins);
+ AnalysisConsumer->AddDiagnosticConsumer(
+ new AnalyzerDiagnosticConsumer(Context));
+ Consumers.push_back(AnalysisConsumer);
+ }
return new MultiplexConsumer(Consumers);
}
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyModule.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyModule.h?rev=201340&r1=201339&r2=201340&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidyModule.h (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidyModule.h Thu Feb 13 10:10:47 2014
@@ -90,6 +90,7 @@ public:
typedef std::map<std::string, CheckFactoryBase *> FactoryMap;
FactoryMap::const_iterator begin() const { return Factories.begin(); }
FactoryMap::const_iterator end() const { return Factories.end(); }
+ bool empty() const { return Factories.empty(); }
private:
FactoryMap Factories;
More information about the cfe-commits
mailing list