diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-10-25 00:25:24 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-10-25 00:25:24 +0000 |
commit | 0062e7496183921decc7dcaefc37063ff017ac8b (patch) | |
tree | 2f9564418483f66da5e5dbdbb260874c90c3ca5f /clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp | |
parent | 2d7bb047887ad6b18e5e1651ad738d47f775ea6f (diff) | |
download | bcm5719-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.cpp | 23 |
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 //===----------------------------------------------------------------------===// |