diff options
-rw-r--r-- | Analysis/DataflowSolver.h | 9 | ||||
-rw-r--r-- | Analysis/UninitializedValues.cpp | 11 |
2 files changed, 11 insertions, 9 deletions
diff --git a/Analysis/DataflowSolver.h b/Analysis/DataflowSolver.h index 724b4a4fbb..d3d4d9f917 100644 --- a/Analysis/DataflowSolver.h +++ b/Analysis/DataflowSolver.h @@ -90,6 +90,15 @@ public: ProcessBlock(B,AnalysisDirTag()); } + void runOnBlock(const CFGBlock& B) { runOnBlock(&B); } + void runOnBlock(CFG::iterator &I) { runOnBlock(*I); } + void runOnBlock(CFG::const_iterator &I) { runOnBlock(*I); } + + void runOnAllBlocks(const CFG& cfg) { + for (CFG::const_iterator I=cfg.begin(), E=cfg.end(); I!=E; ++I) + runOnBlock(I); + } + //===--------------------------------------------------------------------===// // Internal solver logic. //===--------------------------------------------------------------------===// diff --git a/Analysis/UninitializedValues.cpp b/Analysis/UninitializedValues.cpp index 56897e67d4..09f195e382 100644 --- a/Analysis/UninitializedValues.cpp +++ b/Analysis/UninitializedValues.cpp @@ -238,7 +238,6 @@ struct Merge { Dst.DeclBV |= Src.DeclBV; Dst.ExprBV |= Src.ExprBV; - } }; } // end anonymous namespace @@ -250,7 +249,6 @@ struct Merge { UninitializedValues_ValueTypes::ObserverTy::~ObserverTy() {} namespace { - class UninitializedValuesChecker : public UninitializedValues::ObserverTy { ASTContext &Ctx; Diagnostic &Diags; @@ -270,11 +268,9 @@ public: Diags.Report(DR->getSourceRange().Begin(), diag::warn_uninit_val); } }; - } // end anonymous namespace namespace clang { - void CheckUninitializedValues(CFG& cfg, ASTContext &Ctx, Diagnostic &Diags) { typedef DataflowSolver<UninitializedValues,TransferFuncs,Merge> Solver; @@ -287,9 +283,6 @@ void CheckUninitializedValues(CFG& cfg, ASTContext &Ctx, Diagnostic &Diags) { // Scan for DeclRefExprs that use uninitialized values. UninitializedValuesChecker Observer(Ctx,Diags); U.getAnalysisData().Observer = &Observer; - - for (CFG::iterator I=cfg.begin(), E=cfg.end(); I!=E; ++I) - S.runOnBlock(&*I); -} - + S.runOnAllBlocks(cfg); } +} // end namespace clang |