forked from OSchip/llvm-project
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
This commit is contained in:
parent
efe2f7e2c8
commit
298b3823b5
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue