summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2014-02-13 16:10:47 +0000
committerAlexander Kornienko <alexfh@google.com>2014-02-13 16:10:47 +0000
commit298b3823b58bca118f1a84cc0dc71fe7f8e54eb6 (patch)
tree41216a38246c7f8e3e55ea505b96491346e740ec
parentefe2f7e2c83473448823bd6f48b1ec31091863fc (diff)
downloadbcm5719-llvm-298b3823b58bca118f1a84cc0dc71fe7f8e54eb6.tar.gz
bcm5719-llvm-298b3823b58bca118f1a84cc0dc71fe7f8e54eb6.zip
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 llvm-svn: 201340
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidy.cpp26
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyModule.h1
2 files changed, 17 insertions, 10 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp
index aec2d98a2f7..6b5a4144f24 100644
--- a/clang-tools-extra/clang-tidy/ClangTidy.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp
@@ -152,18 +152,24 @@ clang::ASTConsumer *ClangTidyASTConsumerFactory::CreateASTConsumer(
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);
}
diff --git a/clang-tools-extra/clang-tidy/ClangTidyModule.h b/clang-tools-extra/clang-tidy/ClangTidyModule.h
index 830cbd5b15c..47a69331314 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyModule.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyModule.h
@@ -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;
OpenPOWER on IntegriCloud