aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-09-18 21:08:21 +0000
committerTed Kremenek <kremenek@apple.com>2007-09-18 21:08:21 +0000
commit294a7c9cf15c4aefd906ca0fde8ebf9ecf7aa1af (patch)
tree434e9d9ba0853f0513b8a79a4f32fa79d1f0b0f3
parenta90b0d1e585d993621a342d0b2874e61941372d5 (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.h9
-rw-r--r--Analysis/UninitializedValues.cpp11
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