diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-09-18 21:08:21 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-09-18 21:08:21 +0000 |
commit | 294a7c9cf15c4aefd906ca0fde8ebf9ecf7aa1af (patch) | |
tree | 434e9d9ba0853f0513b8a79a4f32fa79d1f0b0f3 | |
parent | a90b0d1e585d993621a342d0b2874e61941372d5 (diff) |
Add overloaded versions of DataflowSolver::runOnBlock to simplify
invocation of the solver.
UninitializedValues checker now uses CFG::runOnAllBlocks to query the
computed dataflow values (tighter code).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42107 91177308-0d34-0410-b5e6-96231b3b80d8
-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 |