[clang] [clang][analyzer][NFC] Improve Clang Static Analyzer performance. (PR #138295)

via cfe-commits cfe-commits at lists.llvm.org
Fri May 2 09:11:53 PDT 2025


https://github.com/tigbr updated https://github.com/llvm/llvm-project/pull/138295

>From faf0d6120ae1dd8b411e29d51cff344a9d042cb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20T=C3=B3thv=C3=A1ri?=
 <gabor.tothvari at ericsson.com>
Date: Sun, 20 Apr 2025 23:23:43 +0200
Subject: [PATCH 1/2] [clang][analyzer][NFC] Improve Clang Static Analyzer
 performance.

Pass in separate BumpPtrAllocators to the different data structures
in the analyzer, instead of reusing the BumpPtrAllocator of the
ExplodedGraph everywhere, to gain a measurable speedup in analysis.
---
 .../Core/PathSensitive/CoreEngine.h           |  3 ++-
 .../Core/PathSensitive/ExprEngine.h           |  4 +++-
 .../Core/PathSensitive/ProgramState.h         |  2 +-
 .../Core/PathSensitive/SValBuilder.h          | 13 +++++++----
 clang/lib/StaticAnalyzer/Core/CoreEngine.cpp  |  4 ++--
 clang/lib/StaticAnalyzer/Core/ExprEngine.cpp  | 11 +++++----
 .../lib/StaticAnalyzer/Core/ProgramState.cpp  |  8 +++----
 clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 13 +++++++----
 .../StaticAnalyzer/Core/SimpleSValBuilder.cpp | 23 +++++++++++++------
 .../Frontend/AnalysisConsumer.cpp             |  5 +++-
 10 files changed, 55 insertions(+), 31 deletions(-)

diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
index 80b79fd4e928f..6b6a28902092e 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
@@ -138,7 +138,8 @@ class CoreEngine {
   /// Construct a CoreEngine object to analyze the provided CFG.
   CoreEngine(ExprEngine &exprengine,
              FunctionSummariesTy *FS,
-             AnalyzerOptions &Opts);
+             AnalyzerOptions &Opts,
+             llvm::BumpPtrAllocator &BlockCounterFactoryAllocator);
 
   CoreEngine(const CoreEngine &) = delete;
   CoreEngine &operator=(const CoreEngine &) = delete;
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
index 20c446e33ef9a..4d10335d5a1fb 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
@@ -181,7 +181,9 @@ class ExprEngine {
 public:
   ExprEngine(cross_tu::CrossTranslationUnitContext &CTU, AnalysisManager &mgr,
              SetOfConstDecls *VisitedCalleesIn,
-             FunctionSummariesTy *FS, InliningModes HowToInlineIn);
+             FunctionSummariesTy *FS, InliningModes HowToInlineIn,
+             std::array<llvm::BumpPtrAllocator, 7> &ProgramStateAllocators,
+             llvm::BumpPtrAllocator &BlockCounterFactoryAllocator);
 
   virtual ~ExprEngine() = default;
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
index a20516b003c7d..a8403d170e896 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
@@ -530,7 +530,7 @@ class ProgramStateManager {
   ProgramStateManager(ASTContext &Ctx,
                  StoreManagerCreator CreateStoreManager,
                  ConstraintManagerCreator CreateConstraintManager,
-                 llvm::BumpPtrAllocator& alloc,
+                 std::array<llvm::BumpPtrAllocator, 7> &Allocators,
                  ExprEngine *expreng);
 
   ~ProgramStateManager();
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
index 54430d426a82a..904718eae1843 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
@@ -76,8 +76,10 @@ class SValBuilder {
   const unsigned ArrayIndexWidth;
 
 public:
-  SValBuilder(llvm::BumpPtrAllocator &alloc, ASTContext &context,
-              ProgramStateManager &stateMgr);
+  SValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+              llvm::BumpPtrAllocator &SymbolManagerAllocator,
+              llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+              ASTContext &context, ProgramStateManager &stateMgr);
 
   virtual ~SValBuilder() = default;
 
@@ -409,9 +411,10 @@ class SValBuilder {
                                const StackFrameContext *SFC);
 };
 
-SValBuilder* createSimpleSValBuilder(llvm::BumpPtrAllocator &alloc,
-                                     ASTContext &context,
-                                     ProgramStateManager &stateMgr);
+SValBuilder* createSimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+                                     llvm::BumpPtrAllocator &SymbolManagerAllocator,
+                                     llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+                                     ASTContext &context, ProgramStateManager &stateMgr);
 
 } // namespace ento
 
diff --git a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
index bf1fd7c2356dc..9fa0211abbbbc 100644
--- a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
@@ -75,10 +75,10 @@ static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts) {
 }
 
 CoreEngine::CoreEngine(ExprEngine &exprengine, FunctionSummariesTy *FS,
-                       AnalyzerOptions &Opts)
+                       AnalyzerOptions &Opts, llvm::BumpPtrAllocator &BlockCounterFactoryAllocator)
     : ExprEng(exprengine), WList(generateWorkList(Opts)),
       CTUWList(Opts.IsNaiveCTUEnabled ? generateWorkList(Opts) : nullptr),
-      BCounterFactory(G.getAllocator()), FunctionSummaries(FS) {}
+      BCounterFactory(BlockCounterFactoryAllocator), FunctionSummaries(FS) {}
 
 void CoreEngine::setBlockCounter(BlockCounter C) {
   WList->setBlockCounter(C);
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
index 69cf2dd6fc14e..af410ec5fea5d 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -221,12 +221,15 @@ static const char* TagProviderName = "ExprEngine";
 
 ExprEngine::ExprEngine(cross_tu::CrossTranslationUnitContext &CTU,
                        AnalysisManager &mgr, SetOfConstDecls *VisitedCalleesIn,
-                       FunctionSummariesTy *FS, InliningModes HowToInlineIn)
+                       FunctionSummariesTy *FS, InliningModes HowToInlineIn,
+                       std::array<llvm::BumpPtrAllocator, 7> &ProgramStateAllocators,
+                       llvm::BumpPtrAllocator& BlockCounterFactoryAllocator)
     : CTU(CTU), IsCTUEnabled(mgr.getAnalyzerOptions().IsNaiveCTUEnabled),
       AMgr(mgr), AnalysisDeclContexts(mgr.getAnalysisDeclContextManager()),
-      Engine(*this, FS, mgr.getAnalyzerOptions()), G(Engine.getGraph()),
-      StateMgr(getContext(), mgr.getStoreManagerCreator(),
-               mgr.getConstraintManagerCreator(), G.getAllocator(), this),
+      Engine(*this, FS, mgr.getAnalyzerOptions(), BlockCounterFactoryAllocator),
+             G(Engine.getGraph()),
+      StateMgr(getContext(), mgr.getStoreManagerCreator(), mgr.getConstraintManagerCreator(),
+               ProgramStateAllocators, this),
       SymMgr(StateMgr.getSymbolManager()), MRMgr(StateMgr.getRegionManager()),
       svalBuilder(StateMgr.getSValBuilder()), ObjCNoRet(mgr.getASTContext()),
       BR(mgr, *this), VisitedCallees(VisitedCalleesIn),
diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
index 34ab2388cbd2f..a7709d6fc62b7 100644
--- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
@@ -72,11 +72,11 @@ int64_t ProgramState::getID() const {
 ProgramStateManager::ProgramStateManager(ASTContext &Ctx,
                                          StoreManagerCreator CreateSMgr,
                                          ConstraintManagerCreator CreateCMgr,
-                                         llvm::BumpPtrAllocator &alloc,
+                                         std::array<llvm::BumpPtrAllocator, 7> &Allocators,
                                          ExprEngine *ExprEng)
-  : Eng(ExprEng), EnvMgr(alloc), GDMFactory(alloc),
-    svalBuilder(createSimpleSValBuilder(alloc, Ctx, *this)),
-    CallEventMgr(new CallEventManager(alloc)), Alloc(alloc) {
+  : Eng(ExprEng), EnvMgr(Allocators[0]), GDMFactory(Allocators[1]),
+    svalBuilder(createSimpleSValBuilder(Allocators[2], Allocators[3], Allocators[4], Ctx, *this)),
+    CallEventMgr(new CallEventManager(Allocators[5])), Alloc(Allocators[6]) {
   StoreMgr = (*CreateSMgr)(*this);
   ConstraintMgr = (*CreateCMgr)(*this, ExprEng);
 }
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 4f45b24be86c1..c1710df46d22c 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -49,13 +49,16 @@ using namespace ento;
 
 void SValBuilder::anchor() {}
 
-SValBuilder::SValBuilder(llvm::BumpPtrAllocator &alloc, ASTContext &context,
+SValBuilder::SValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+                         llvm::BumpPtrAllocator &SymbolManagerAllocator,
+                         llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+                         ASTContext &context,
                          ProgramStateManager &stateMgr)
-    : Context(context), BasicVals(context, alloc),
-      SymMgr(context, BasicVals, alloc), MemMgr(context, alloc),
+    : Context(context), BasicVals(context, BasicValueFactoryAllocator),
+      SymMgr(context, BasicVals, SymbolManagerAllocator),
+      MemMgr(context, MemRegionManagerAllocator),
       StateMgr(stateMgr),
-      AnOpts(
-          stateMgr.getOwningEngine().getAnalysisManager().getAnalyzerOptions()),
+      AnOpts(stateMgr.getOwningEngine().getAnalysisManager().getAnalyzerOptions()),
       ArrayIndexTy(context.LongLongTy),
       ArrayIndexWidth(context.getTypeSize(ArrayIndexTy)) {}
 
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
index afb0273d23bd4..32022bd4d8e62 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
@@ -64,9 +64,14 @@ class SimpleSValBuilder : public SValBuilder {
   SVal simplifySValOnce(ProgramStateRef State, SVal V);
 
 public:
-  SimpleSValBuilder(llvm::BumpPtrAllocator &alloc, ASTContext &context,
-                    ProgramStateManager &stateMgr)
-      : SValBuilder(alloc, context, stateMgr) {}
+  SimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+                    llvm::BumpPtrAllocator &SymbolManagerAllocator,
+                    llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+                    ASTContext &context, ProgramStateManager &stateMgr)
+      : SValBuilder(BasicValueFactoryAllocator,
+                    SymbolManagerAllocator,
+                    MemRegionManagerAllocator,
+                    context, stateMgr) {}
   ~SimpleSValBuilder() override {}
 
   SVal evalBinOpNN(ProgramStateRef state, BinaryOperator::Opcode op,
@@ -98,10 +103,14 @@ class SimpleSValBuilder : public SValBuilder {
 };
 } // end anonymous namespace
 
-SValBuilder *ento::createSimpleSValBuilder(llvm::BumpPtrAllocator &alloc,
-                                           ASTContext &context,
-                                           ProgramStateManager &stateMgr) {
-  return new SimpleSValBuilder(alloc, context, stateMgr);
+SValBuilder *ento::createSimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+                                           llvm::BumpPtrAllocator &SymbolManagerAllocator,
+                                           llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+                                           ASTContext &context, ProgramStateManager &stateMgr) {
+  return new SimpleSValBuilder(BasicValueFactoryAllocator,
+                               SymbolManagerAllocator,
+                               MemRegionManagerAllocator,
+                               context, stateMgr);
 }
 
 // Checks if the negation the value and flipping sign preserve
diff --git a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
index 189d7d6bede8e..1e0030a339ef3 100644
--- a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
+++ b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -752,7 +752,10 @@ void AnalysisConsumer::RunPathSensitiveChecks(Decl *D,
   if (!Mgr->getAnalysisDeclContext(D)->getAnalysis<RelaxedLiveVariables>())
     return;
 
-  ExprEngine Eng(CTU, *Mgr, VisitedCallees, &FunctionSummaries, IMode);
+  std::array<llvm::BumpPtrAllocator, 7> ProgramStateManagerAllocators;
+  llvm::BumpPtrAllocator BlockCounterFactoryAllocator;
+
+  ExprEngine Eng(CTU, *Mgr, VisitedCallees, &FunctionSummaries, IMode, ProgramStateManagerAllocators, BlockCounterFactoryAllocator);
 
   // Execute the worklist algorithm.
   llvm::TimeRecord ExprEngineStartTime;

>From 9ef7466555c2f873721b446479dd3737f62f0170 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20T=C3=B3thv=C3=A1ri?=
 <gabor.tothvari at ericsson.com>
Date: Fri, 2 May 2025 18:06:30 +0200
Subject: [PATCH 2/2] Fix formatting.

---
 .../Core/PathSensitive/CoreEngine.h            |  3 +--
 .../Core/PathSensitive/ExprEngine.h            |  4 ++--
 .../Core/PathSensitive/ProgramState.h          |  9 ++++-----
 .../Core/PathSensitive/SValBuilder.h           |  9 +++++----
 clang/lib/StaticAnalyzer/Core/CoreEngine.cpp   |  3 ++-
 clang/lib/StaticAnalyzer/Core/ExprEngine.cpp   | 17 +++++++++--------
 clang/lib/StaticAnalyzer/Core/ProgramState.cpp | 17 ++++++++---------
 clang/lib/StaticAnalyzer/Core/SValBuilder.cpp  |  9 ++++-----
 .../StaticAnalyzer/Core/SimpleSValBuilder.cpp  | 18 ++++++++----------
 .../Frontend/AnalysisConsumer.cpp              |  3 ++-
 10 files changed, 45 insertions(+), 47 deletions(-)

diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
index 6b6a28902092e..c3fe488ef23f7 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
@@ -136,8 +136,7 @@ class CoreEngine {
 
 public:
   /// Construct a CoreEngine object to analyze the provided CFG.
-  CoreEngine(ExprEngine &exprengine,
-             FunctionSummariesTy *FS,
+  CoreEngine(ExprEngine &exprengine, FunctionSummariesTy *FS,
              AnalyzerOptions &Opts,
              llvm::BumpPtrAllocator &BlockCounterFactoryAllocator);
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
index 4d10335d5a1fb..5749927b61e77 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
@@ -180,8 +180,8 @@ class ExprEngine {
 
 public:
   ExprEngine(cross_tu::CrossTranslationUnitContext &CTU, AnalysisManager &mgr,
-             SetOfConstDecls *VisitedCalleesIn,
-             FunctionSummariesTy *FS, InliningModes HowToInlineIn,
+             SetOfConstDecls *VisitedCalleesIn, FunctionSummariesTy *FS,
+             InliningModes HowToInlineIn,
              std::array<llvm::BumpPtrAllocator, 7> &ProgramStateAllocators,
              llvm::BumpPtrAllocator &BlockCounterFactoryAllocator);
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
index a8403d170e896..a56adaf5de532 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
@@ -527,11 +527,10 @@ class ProgramStateManager {
   std::vector<ProgramState *> freeStates;
 
 public:
-  ProgramStateManager(ASTContext &Ctx,
-                 StoreManagerCreator CreateStoreManager,
-                 ConstraintManagerCreator CreateConstraintManager,
-                 std::array<llvm::BumpPtrAllocator, 7> &Allocators,
-                 ExprEngine *expreng);
+  ProgramStateManager(ASTContext &Ctx, StoreManagerCreator CreateStoreManager,
+                      ConstraintManagerCreator CreateConstraintManager,
+                      std::array<llvm::BumpPtrAllocator, 7> &Allocators,
+                      ExprEngine *expreng);
 
   ~ProgramStateManager();
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
index 904718eae1843..2cdff4e320a64 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
@@ -411,10 +411,11 @@ class SValBuilder {
                                const StackFrameContext *SFC);
 };
 
-SValBuilder* createSimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
-                                     llvm::BumpPtrAllocator &SymbolManagerAllocator,
-                                     llvm::BumpPtrAllocator &MemRegionManagerAllocator,
-                                     ASTContext &context, ProgramStateManager &stateMgr);
+SValBuilder *
+createSimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+                        llvm::BumpPtrAllocator &SymbolManagerAllocator,
+                        llvm::BumpPtrAllocator &MemRegionManagerAllocator,
+                        ASTContext &context, ProgramStateManager &stateMgr);
 
 } // namespace ento
 
diff --git a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
index 9fa0211abbbbc..338136bab52b0 100644
--- a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
@@ -75,7 +75,8 @@ static std::unique_ptr<WorkList> generateWorkList(AnalyzerOptions &Opts) {
 }
 
 CoreEngine::CoreEngine(ExprEngine &exprengine, FunctionSummariesTy *FS,
-                       AnalyzerOptions &Opts, llvm::BumpPtrAllocator &BlockCounterFactoryAllocator)
+                       AnalyzerOptions &Opts,
+                       llvm::BumpPtrAllocator &BlockCounterFactoryAllocator)
     : ExprEng(exprengine), WList(generateWorkList(Opts)),
       CTUWList(Opts.IsNaiveCTUEnabled ? generateWorkList(Opts) : nullptr),
       BCounterFactory(BlockCounterFactoryAllocator), FunctionSummaries(FS) {}
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
index af410ec5fea5d..17cbcc9b7117b 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -219,17 +219,18 @@ REGISTER_TRAIT_WITH_PROGRAMSTATE(PendingArrayDestruction,
 
 static const char* TagProviderName = "ExprEngine";
 
-ExprEngine::ExprEngine(cross_tu::CrossTranslationUnitContext &CTU,
-                       AnalysisManager &mgr, SetOfConstDecls *VisitedCalleesIn,
-                       FunctionSummariesTy *FS, InliningModes HowToInlineIn,
-                       std::array<llvm::BumpPtrAllocator, 7> &ProgramStateAllocators,
-                       llvm::BumpPtrAllocator& BlockCounterFactoryAllocator)
+ExprEngine::ExprEngine(
+    cross_tu::CrossTranslationUnitContext &CTU, AnalysisManager &mgr,
+    SetOfConstDecls *VisitedCalleesIn, FunctionSummariesTy *FS,
+    InliningModes HowToInlineIn,
+    std::array<llvm::BumpPtrAllocator, 7> &ProgramStateAllocators,
+    llvm::BumpPtrAllocator &BlockCounterFactoryAllocator)
     : CTU(CTU), IsCTUEnabled(mgr.getAnalyzerOptions().IsNaiveCTUEnabled),
       AMgr(mgr), AnalysisDeclContexts(mgr.getAnalysisDeclContextManager()),
       Engine(*this, FS, mgr.getAnalyzerOptions(), BlockCounterFactoryAllocator),
-             G(Engine.getGraph()),
-      StateMgr(getContext(), mgr.getStoreManagerCreator(), mgr.getConstraintManagerCreator(),
-               ProgramStateAllocators, this),
+      G(Engine.getGraph()),
+      StateMgr(getContext(), mgr.getStoreManagerCreator(),
+               mgr.getConstraintManagerCreator(), ProgramStateAllocators, this),
       SymMgr(StateMgr.getSymbolManager()), MRMgr(StateMgr.getRegionManager()),
       svalBuilder(StateMgr.getSValBuilder()), ObjCNoRet(mgr.getASTContext()),
       BR(mgr, *this), VisitedCallees(VisitedCalleesIn),
diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
index a7709d6fc62b7..66d7f69b512ae 100644
--- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
@@ -69,19 +69,18 @@ int64_t ProgramState::getID() const {
   return getStateManager().Alloc.identifyKnownAlignedObject<ProgramState>(this);
 }
 
-ProgramStateManager::ProgramStateManager(ASTContext &Ctx,
-                                         StoreManagerCreator CreateSMgr,
-                                         ConstraintManagerCreator CreateCMgr,
-                                         std::array<llvm::BumpPtrAllocator, 7> &Allocators,
-                                         ExprEngine *ExprEng)
-  : Eng(ExprEng), EnvMgr(Allocators[0]), GDMFactory(Allocators[1]),
-    svalBuilder(createSimpleSValBuilder(Allocators[2], Allocators[3], Allocators[4], Ctx, *this)),
-    CallEventMgr(new CallEventManager(Allocators[5])), Alloc(Allocators[6]) {
+ProgramStateManager::ProgramStateManager(
+    ASTContext &Ctx, StoreManagerCreator CreateSMgr,
+    ConstraintManagerCreator CreateCMgr,
+    std::array<llvm::BumpPtrAllocator, 7> &Allocators, ExprEngine *ExprEng)
+    : Eng(ExprEng), EnvMgr(Allocators[0]), GDMFactory(Allocators[1]),
+      svalBuilder(createSimpleSValBuilder(Allocators[2], Allocators[3],
+                                          Allocators[4], Ctx, *this)),
+      CallEventMgr(new CallEventManager(Allocators[5])), Alloc(Allocators[6]) {
   StoreMgr = (*CreateSMgr)(*this);
   ConstraintMgr = (*CreateCMgr)(*this, ExprEng);
 }
 
-
 ProgramStateManager::~ProgramStateManager() {
   for (GDMContextsTy::iterator I=GDMContexts.begin(), E=GDMContexts.end();
        I!=E; ++I)
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index c1710df46d22c..9c8348f78fad2 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -52,13 +52,12 @@ void SValBuilder::anchor() {}
 SValBuilder::SValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
                          llvm::BumpPtrAllocator &SymbolManagerAllocator,
                          llvm::BumpPtrAllocator &MemRegionManagerAllocator,
-                         ASTContext &context,
-                         ProgramStateManager &stateMgr)
+                         ASTContext &context, ProgramStateManager &stateMgr)
     : Context(context), BasicVals(context, BasicValueFactoryAllocator),
       SymMgr(context, BasicVals, SymbolManagerAllocator),
-      MemMgr(context, MemRegionManagerAllocator),
-      StateMgr(stateMgr),
-      AnOpts(stateMgr.getOwningEngine().getAnalysisManager().getAnalyzerOptions()),
+      MemMgr(context, MemRegionManagerAllocator), StateMgr(stateMgr),
+      AnOpts(
+          stateMgr.getOwningEngine().getAnalysisManager().getAnalyzerOptions()),
       ArrayIndexTy(context.LongLongTy),
       ArrayIndexWidth(context.getTypeSize(ArrayIndexTy)) {}
 
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
index 32022bd4d8e62..070e37959c8ea 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
@@ -68,10 +68,8 @@ class SimpleSValBuilder : public SValBuilder {
                     llvm::BumpPtrAllocator &SymbolManagerAllocator,
                     llvm::BumpPtrAllocator &MemRegionManagerAllocator,
                     ASTContext &context, ProgramStateManager &stateMgr)
-      : SValBuilder(BasicValueFactoryAllocator,
-                    SymbolManagerAllocator,
-                    MemRegionManagerAllocator,
-                    context, stateMgr) {}
+      : SValBuilder(BasicValueFactoryAllocator, SymbolManagerAllocator,
+                    MemRegionManagerAllocator, context, stateMgr) {}
   ~SimpleSValBuilder() override {}
 
   SVal evalBinOpNN(ProgramStateRef state, BinaryOperator::Opcode op,
@@ -103,14 +101,14 @@ class SimpleSValBuilder : public SValBuilder {
 };
 } // end anonymous namespace
 
-SValBuilder *ento::createSimpleSValBuilder(llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
-                                           llvm::BumpPtrAllocator &SymbolManagerAllocator,
-                                           llvm::BumpPtrAllocator &MemRegionManagerAllocator,
-                                           ASTContext &context, ProgramStateManager &stateMgr) {
+SValBuilder *ento::createSimpleSValBuilder(
+    llvm::BumpPtrAllocator &BasicValueFactoryAllocator,
+    llvm::BumpPtrAllocator &SymbolManagerAllocator,
+    llvm::BumpPtrAllocator &MemRegionManagerAllocator, ASTContext &context,
+    ProgramStateManager &stateMgr) {
   return new SimpleSValBuilder(BasicValueFactoryAllocator,
                                SymbolManagerAllocator,
-                               MemRegionManagerAllocator,
-                               context, stateMgr);
+                               MemRegionManagerAllocator, context, stateMgr);
 }
 
 // Checks if the negation the value and flipping sign preserve
diff --git a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
index 1e0030a339ef3..a7470732ce851 100644
--- a/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
+++ b/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -755,7 +755,8 @@ void AnalysisConsumer::RunPathSensitiveChecks(Decl *D,
   std::array<llvm::BumpPtrAllocator, 7> ProgramStateManagerAllocators;
   llvm::BumpPtrAllocator BlockCounterFactoryAllocator;
 
-  ExprEngine Eng(CTU, *Mgr, VisitedCallees, &FunctionSummaries, IMode, ProgramStateManagerAllocators, BlockCounterFactoryAllocator);
+  ExprEngine Eng(CTU, *Mgr, VisitedCallees, &FunctionSummaries, IMode,
+                 ProgramStateManagerAllocators, BlockCounterFactoryAllocator);
 
   // Execute the worklist algorithm.
   llvm::TimeRecord ExprEngineStartTime;



More information about the cfe-commits mailing list