From: Dan Gohman Date: Mon, 14 May 2007 14:25:08 +0000 (+0000) Subject: Add passes -view-cfg and -view-cfg-only that are like -print-cfg and X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=a196b993e0b79142c6388c75b71f1fc54c767dd1;p=oota-llvm.git 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 --- diff --git a/lib/Analysis/CFGPrinter.cpp b/lib/Analysis/CFGPrinter.cpp index c98cfe4daee..cc0f6b43182 100644 --- a/lib/Analysis/CFGPrinter.cpp +++ b/lib/Analysis/CFGPrinter.cpp @@ -90,6 +90,48 @@ struct DOTGraphTraits : 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 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 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) {}