summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-10-25 00:25:24 +0000
committerTed Kremenek <kremenek@apple.com>2011-10-25 00:25:24 +0000
commit0062e7496183921decc7dcaefc37063ff017ac8b (patch)
tree2f9564418483f66da5e5dbdbb260874c90c3ca5f /clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
parent2d7bb047887ad6b18e5e1651ad738d47f775ea6f (diff)
downloadbcm5719-llvm-0062e7496183921decc7dcaefc37063ff017ac8b.tar.gz
bcm5719-llvm-0062e7496183921decc7dcaefc37063ff017ac8b.zip
Add source-level dominators analysis. Patch by Guoping Long!
llvm-svn: 142885
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp b/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
index d9d569423d3..c06be4467aa 100644
--- a/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
@@ -15,11 +15,34 @@
#include "clang/StaticAnalyzer/Core/Checker.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
#include "clang/Analysis/Analyses/LiveVariables.h"
+#include "clang/Analysis/Analyses/Dominators.h"
using namespace clang;
using namespace ento;
//===----------------------------------------------------------------------===//
+// DominatorsTreeDumper
+//===----------------------------------------------------------------------===//
+
+namespace {
+class DominatorsTreeDumper : public Checker<check::ASTCodeBody> {
+public:
+ void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
+ BugReporter &BR) const {
+ if (AnalysisDeclContext *AC = mgr.getAnalysisDeclContext(D)) {
+ DominatorTree dom(*AC);
+ dom.BuildDominatorTree();
+ dom.dump();
+ }
+ }
+};
+}
+
+void ento::registerDominatorsTreeDumper(CheckerManager &mgr) {
+ mgr.registerChecker<DominatorsTreeDumper>();
+}
+
+//===----------------------------------------------------------------------===//
// LiveVariablesDumper
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud