diff options
author | Devang Patel <dpatel@apple.com> | 2008-03-18 00:39:19 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-03-18 00:39:19 +0000 |
commit | 864970e9b629e34e39f1a8b80c01d196ebf706de (patch) | |
tree | ffe44f7fdef61737d3e6c236ff45cc4922a2b1ce /llvm/lib/Analysis/CFGPrinter.cpp | |
parent | 924ca7f01d4670682d4e68222e06e7ed6bc1fbad (diff) | |
download | bcm5719-llvm-864970e9b629e34e39f1a8b80c01d196ebf706de.tar.gz bcm5719-llvm-864970e9b629e34e39f1a8b80c01d196ebf706de.zip |
Identify Analysis pass.
Do not run analysis pass again if analysis info is still available.
This fixes PR1441.
llvm-svn: 48476
Diffstat (limited to 'llvm/lib/Analysis/CFGPrinter.cpp')
-rw-r--r-- | llvm/lib/Analysis/CFGPrinter.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/CFGPrinter.cpp b/llvm/lib/Analysis/CFGPrinter.cpp index a96e9d066ee..7b61ff8ebfe 100644 --- a/llvm/lib/Analysis/CFGPrinter.cpp +++ b/llvm/lib/Analysis/CFGPrinter.cpp @@ -94,6 +94,9 @@ namespace { static char ID; // Pass identifcation, replacement for typeid CFGViewer() : FunctionPass((intptr_t)&ID) {} + /// isAnalysis - Return true if this pass is implementing an analysis pass. + virtual bool isAnalysis() const { return true; } + virtual bool runOnFunction(Function &F) { F.viewCFG(); return false; @@ -114,6 +117,9 @@ namespace { static char ID; // Pass identifcation, replacement for typeid CFGOnlyViewer() : FunctionPass((intptr_t)&ID) {} + /// isAnalysis - Return true if this pass is implementing an analysis pass. + virtual bool isAnalysis() const { return true; } + virtual bool runOnFunction(Function &F) { CFGOnly = true; F.viewCFG(); @@ -137,6 +143,9 @@ namespace { CFGPrinter() : FunctionPass((intptr_t)&ID) {} explicit CFGPrinter(intptr_t pid) : FunctionPass(pid) {} + /// isAnalysis - Return true if this pass is implementing an analysis pass. + virtual bool isAnalysis() const { return true; } + virtual bool runOnFunction(Function &F) { std::string Filename = "cfg." + F.getName() + ".dot"; cerr << "Writing '" << Filename << "'..."; @@ -164,6 +173,10 @@ namespace { struct VISIBILITY_HIDDEN CFGOnlyPrinter : public CFGPrinter { static char ID; // Pass identification, replacement for typeid CFGOnlyPrinter() : CFGPrinter((intptr_t)&ID) {} + + /// isAnalysis - Return true if this pass is implementing an analysis pass. + virtual bool isAnalysis() const { return true; } + virtual bool runOnFunction(Function &F) { bool OldCFGOnly = CFGOnly; CFGOnly = true; |