Identify Analysis pass.

Do not run analysis pass again if analysis info is still available.
This fixes PR1441.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel
2008-03-18 00:39:19 +00:00
parent b176038f98
commit 1cee94f041
19 changed files with 83 additions and 0 deletions

View File

@ -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;