diff options
author | Dan Gohman <gohman@apple.com> | 2007-05-14 14:25:08 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2007-05-14 14:25:08 +0000 |
commit | a196b993e0b79142c6388c75b71f1fc54c767dd1 (patch) | |
tree | d465d79dba0ea2027db63eed161d614e3f7eb711 /lib/Analysis/CFGPrinter.cpp | |
parent | 2703f23304c4cd466655f4eebd7cf32282f4bbb8 (diff) | |
download | external_llvm-a196b993e0b79142c6388c75b71f1fc54c767dd1.zip external_llvm-a196b993e0b79142c6388c75b71f1fc54c767dd1.tar.gz external_llvm-a196b993e0b79142c6388c75b71f1fc54c767dd1.tar.bz2 |
Add passes -view-cfg and -view-cfg-only that are like -print-cfg and
-print-cfg-only except they use the ViewCFG function, which displays the
CFG rendered with graphviz with gv.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37033 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/CFGPrinter.cpp')
-rw-r--r-- | lib/Analysis/CFGPrinter.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/Analysis/CFGPrinter.cpp b/lib/Analysis/CFGPrinter.cpp index c98cfe4..cc0f6b4 100644 --- a/lib/Analysis/CFGPrinter.cpp +++ b/lib/Analysis/CFGPrinter.cpp @@ -90,6 +90,48 @@ struct DOTGraphTraits<const Function*> : public DefaultDOTGraphTraits { } namespace { + struct VISIBILITY_HIDDEN CFGViewer : public FunctionPass { + static char ID; // Pass identifcation, replacement for typeid + CFGViewer() : FunctionPass((intptr_t)&ID) {} + + virtual bool runOnFunction(Function &F) { + F.viewCFG(); + return false; + } + + void print(std::ostream &OS, const Module* = 0) const {} + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + } + }; + + char CFGViewer::ID = 0; + RegisterPass<CFGViewer> V0("view-cfg", + "View CFG of function"); + + struct VISIBILITY_HIDDEN CFGOnlyViewer : public FunctionPass { + static char ID; // Pass identifcation, replacement for typeid + CFGOnlyViewer() : FunctionPass((intptr_t)&ID) {} + + virtual bool runOnFunction(Function &F) { + CFGOnly = true; + F.viewCFG(); + CFGOnly = false; + return false; + } + + void print(std::ostream &OS, const Module* = 0) const {} + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + } + }; + + char CFGOnlyViewer::ID = 0; + RegisterPass<CFGOnlyViewer> V1("view-cfg-only", + "View CFG of function (with no function bodies)"); + struct VISIBILITY_HIDDEN CFGPrinter : public FunctionPass { static char ID; // Pass identification, replacement for typeid CFGPrinter() : FunctionPass((intptr_t)&ID) {} |