summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-08-27 22:30:17 +0000
committerChris Lattner <sabre@nondot.org>2006-08-27 22:30:17 +0000
commit5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0 (patch)
treedea599a5388d6da5b94fec761128353f08be2dc3
parent2dd3d423aae84649c434b2a58ba4ed7e918580d8 (diff)
downloadllvm-5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0.tar.gz
llvm-5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0.tar.bz2
llvm-5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0.tar.xz
Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29921 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/PassSupport.h41
-rw-r--r--lib/Analysis/CFGPrinter.cpp6
-rw-r--r--lib/Analysis/DataStructure/BottomUpClosure.cpp2
-rw-r--r--lib/Analysis/DataStructure/CallTargets.cpp2
-rw-r--r--lib/Analysis/DataStructure/CompleteBottomUp.cpp2
-rw-r--r--lib/Analysis/DataStructure/DataStructureStats.cpp2
-rw-r--r--lib/Analysis/DataStructure/EquivClassGraphs.cpp2
-rw-r--r--lib/Analysis/DataStructure/GraphChecker.cpp2
-rw-r--r--lib/Analysis/DataStructure/Local.cpp2
-rw-r--r--lib/Analysis/DataStructure/TopDownClosure.cpp2
-rw-r--r--lib/Analysis/IPA/FindUsedTypes.cpp2
-rw-r--r--lib/Analysis/InstCount.cpp4
-rw-r--r--lib/Analysis/IntervalPartition.cpp2
-rw-r--r--lib/Analysis/LoopInfo.cpp2
-rw-r--r--lib/Analysis/PostDominators.cpp10
-rw-r--r--lib/Analysis/ScalarEvolution.cpp2
-rw-r--r--lib/CodeGen/LiveIntervalAnalysis.cpp2
-rw-r--r--lib/CodeGen/LiveVariables.cpp2
-rw-r--r--lib/VMCore/Dominators.cpp10
-rw-r--r--tools/opt/AnalysisWrappers.cpp4
-rw-r--r--tools/opt/GraphPrinters.cpp4
-rw-r--r--tools/opt/PrintSCC.cpp4
22 files changed, 52 insertions, 59 deletions
diff --git a/include/llvm/PassSupport.h b/include/llvm/PassSupport.h
index 8d978b35d1..95702c0cfa 100644
--- a/include/llvm/PassSupport.h
+++ b/include/llvm/PassSupport.h
@@ -179,24 +179,33 @@ template<typename PassName>
struct RegisterPass : public RegisterPassBase {
// Register Pass using default constructor...
- RegisterPass(const char *PassArg, const char *Name)
+ RegisterPass(const char *PassArg, const char *Name, bool CFGOnly = false)
: RegisterPassBase(Name, PassArg, typeid(PassName),
- callDefaultCtor<PassName>) {}
+ callDefaultCtor<PassName>) {
+ if (CFGOnly) setOnlyUsesCFG();
+ }
// Register Pass using default constructor explicitly...
RegisterPass(const char *PassArg, const char *Name,
- Pass *(*ctor)())
- : RegisterPassBase(Name, PassArg, typeid(PassName), ctor) {}
+ Pass *(*ctor)(), bool CFGOnly = false)
+ : RegisterPassBase(Name, PassArg, typeid(PassName), ctor) {
+ if (CFGOnly) setOnlyUsesCFG();
+ }
// Register Pass using TargetMachine constructor...
RegisterPass(const char *PassArg, const char *Name,
- Pass *(*targetctor)(TargetMachine &))
- : RegisterPassBase(Name, PassArg, typeid(PassName), 0, targetctor) {}
+ Pass *(*targetctor)(TargetMachine &), bool CFGOnly = false)
+ : RegisterPassBase(Name, PassArg, typeid(PassName), 0, targetctor) {
+ if (CFGOnly) setOnlyUsesCFG();
+ }
// Generic constructor version that has an unknown ctor type...
template<typename CtorType>
- RegisterPass(const char *PassArg, const char *Name, CtorType *Fn)
- : RegisterPassBase(Name, PassArg, typeid(PassName), 0) {}
+ RegisterPass(const char *PassArg, const char *Name, CtorType *Fn,
+ bool CFGOnly = false)
+ : RegisterPassBase(Name, PassArg, typeid(PassName), 0) {
+ if (CFGOnly) setOnlyUsesCFG();
+ }
};
/// RegisterOpt - Register something that is to show up in Opt, this is just a
@@ -246,22 +255,6 @@ struct RegisterOpt : public RegisterPassBase {
}
};
-/// RegisterAnalysis - Register something that is to show up in Analysis, this
-/// is just a shortcut for specifying RegisterPass... Analyses take a special
-/// argument that, when set to true, tells the system that the analysis ONLY
-/// depends on the shape of the CFG, so if a transformation preserves the CFG
-/// that the analysis is not invalidated.
-///
-template<typename PassName>
-struct RegisterAnalysis : public RegisterPassBase {
- RegisterAnalysis(const char *PassArg, const char *Name,
- bool CFGOnly = false)
- : RegisterPassBase(Name, PassArg, typeid(PassName),
- callDefaultCtor<PassName>) {
- if (CFGOnly) setOnlyUsesCFG();
- }
-};
-
/// RegisterAnalysisGroup - Register a Pass as a member of an analysis _group_.
/// Analysis groups are used to define an interface (which need not derive from
diff --git a/lib/Analysis/CFGPrinter.cpp b/lib/Analysis/CFGPrinter.cpp
index 693c1f6d8c..a762a8e5f8 100644
--- a/lib/Analysis/CFGPrinter.cpp
+++ b/lib/Analysis/CFGPrinter.cpp
@@ -109,8 +109,8 @@ namespace {
}
};
- RegisterAnalysis<CFGPrinter> P1("print-cfg",
- "Print CFG of function to 'dot' file");
+ RegisterPass<CFGPrinter> P1("print-cfg",
+ "Print CFG of function to 'dot' file");
struct CFGOnlyPrinter : public CFGPrinter {
virtual bool runOnFunction(Function &F) {
@@ -127,7 +127,7 @@ namespace {
}
};
- RegisterAnalysis<CFGOnlyPrinter>
+ RegisterPass<CFGOnlyPrinter>
P2("print-cfg-only",
"Print CFG of function to 'dot' file (with no function bodies)");
}
diff --git a/lib/Analysis/DataStructure/BottomUpClosure.cpp b/lib/Analysis/DataStructure/BottomUpClosure.cpp
index dc7c761194..d2708b0fb1 100644
--- a/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -37,7 +37,7 @@ namespace {
UpdateGlobals("budatastructures-update-from-globals",
cl::desc("Update local graph from global graph when processing function"));
- RegisterAnalysis<BUDataStructures>
+ RegisterPass<BUDataStructures>
X("budatastructure", "Bottom-up Data Structure Analysis");
}
diff --git a/lib/Analysis/DataStructure/CallTargets.cpp b/lib/Analysis/DataStructure/CallTargets.cpp
index 30d7d48334..eb1e28dcc6 100644
--- a/lib/Analysis/DataStructure/CallTargets.cpp
+++ b/lib/Analysis/DataStructure/CallTargets.cpp
@@ -34,7 +34,7 @@ namespace {
Statistic<> CompleteInd("calltarget", "Number of complete indirect calls");
Statistic<> CompleteEmpty("calltarget", "Number of complete empty calls");
- RegisterAnalysis<CallTargetFinder> X("calltarget", "Find Call Targets (uses DSA)");
+ RegisterPass<CallTargetFinder> X("calltarget","Find Call Targets (uses DSA)");
}
void CallTargetFinder::findIndTargets(Module &M)
diff --git a/lib/Analysis/DataStructure/CompleteBottomUp.cpp b/lib/Analysis/DataStructure/CompleteBottomUp.cpp
index 452f0338cb..ea21a4f030 100644
--- a/lib/Analysis/DataStructure/CompleteBottomUp.cpp
+++ b/lib/Analysis/DataStructure/CompleteBottomUp.cpp
@@ -25,7 +25,7 @@
using namespace llvm;
namespace {
- RegisterAnalysis<CompleteBUDataStructures>
+ RegisterPass<CompleteBUDataStructures>
X("cbudatastructure", "'Complete' Bottom-up Data Structure Analysis");
Statistic<> NumCBUInlines("cbudatastructures", "Number of graphs inlined");
}
diff --git a/lib/Analysis/DataStructure/DataStructureStats.cpp b/lib/Analysis/DataStructure/DataStructureStats.cpp
index f4aff3013a..a73fc96e6e 100644
--- a/lib/Analysis/DataStructure/DataStructureStats.cpp
+++ b/lib/Analysis/DataStructure/DataStructureStats.cpp
@@ -60,7 +60,7 @@ namespace {
void print(std::ostream &O, const Module* = 0) const { }
};
- static RegisterAnalysis<DSGraphStats> Z("dsstats", "DS Graph Statistics");
+ static RegisterPass<DSGraphStats> Z("dsstats", "DS Graph Statistics");
}
FunctionPass *llvm::createDataStructureStatsPass() {
diff --git a/lib/Analysis/DataStructure/EquivClassGraphs.cpp b/lib/Analysis/DataStructure/EquivClassGraphs.cpp
index cc536a7f89..9126ef9814 100644
--- a/lib/Analysis/DataStructure/EquivClassGraphs.cpp
+++ b/lib/Analysis/DataStructure/EquivClassGraphs.cpp
@@ -30,7 +30,7 @@
using namespace llvm;
namespace {
- RegisterAnalysis<EquivClassGraphs> X("eqdatastructure",
+ RegisterPass<EquivClassGraphs> X("eqdatastructure",
"Equivalence-class Bottom-up Data Structure Analysis");
Statistic<> NumEquivBUInlines("equivdatastructures",
"Number of graphs inlined");
diff --git a/lib/Analysis/DataStructure/GraphChecker.cpp b/lib/Analysis/DataStructure/GraphChecker.cpp
index f42ea7eb08..50a41f2b9a 100644
--- a/lib/Analysis/DataStructure/GraphChecker.cpp
+++ b/lib/Analysis/DataStructure/GraphChecker.cpp
@@ -74,7 +74,7 @@ namespace {
void verify(const DSGraph &G);
};
- RegisterAnalysis<DSGC> X("datastructure-gc", "DSA Graph Checking Pass");
+ RegisterPass<DSGC> X("datastructure-gc", "DSA Graph Checking Pass");
}
FunctionPass *llvm::createDataStructureGraphCheckerPass() {
diff --git a/lib/Analysis/DataStructure/Local.cpp b/lib/Analysis/DataStructure/Local.cpp
index ecf953230d..c70970ac31 100644
--- a/lib/Analysis/DataStructure/Local.cpp
+++ b/lib/Analysis/DataStructure/Local.cpp
@@ -33,7 +33,7 @@
using namespace llvm;
-static RegisterAnalysis<LocalDataStructures>
+static RegisterPass<LocalDataStructures>
X("datastructure", "Local Data Structure Analysis");
static cl::opt<bool>
diff --git a/lib/Analysis/DataStructure/TopDownClosure.cpp b/lib/Analysis/DataStructure/TopDownClosure.cpp
index 2271fa4c9a..9fdaac3c34 100644
--- a/lib/Analysis/DataStructure/TopDownClosure.cpp
+++ b/lib/Analysis/DataStructure/TopDownClosure.cpp
@@ -32,7 +32,7 @@ using namespace llvm;
#endif
namespace {
- RegisterAnalysis<TDDataStructures> // Register the pass
+ RegisterPass<TDDataStructures> // Register the pass
Y("tddatastructure", "Top-down Data Structure Analysis");
Statistic<> NumTDInlines("tddatastructures", "Number of graphs inlined");
diff --git a/lib/Analysis/IPA/FindUsedTypes.cpp b/lib/Analysis/IPA/FindUsedTypes.cpp
index 725cec4c01..d4ea9f9489 100644
--- a/lib/Analysis/IPA/FindUsedTypes.cpp
+++ b/lib/Analysis/IPA/FindUsedTypes.cpp
@@ -21,7 +21,7 @@
#include "llvm/Support/InstIterator.h"
using namespace llvm;
-static RegisterAnalysis<FindUsedTypes>
+static RegisterPass<FindUsedTypes>
X("printusedtypes", "Find Used Types");
// IncorporateType - Incorporate one type and all of its subtypes into the
diff --git a/lib/Analysis/InstCount.cpp b/lib/Analysis/InstCount.cpp
index df11fc4895..72bc2c7238 100644
--- a/lib/Analysis/InstCount.cpp
+++ b/lib/Analysis/InstCount.cpp
@@ -55,8 +55,8 @@ namespace {
};
- RegisterAnalysis<InstCount> X("instcount",
- "Counts the various types of Instructions");
+ RegisterPass<InstCount> X("instcount",
+ "Counts the various types of Instructions");
}
FunctionPass *llvm::createInstCountPass() { return new InstCount(); }
diff --git a/lib/Analysis/IntervalPartition.cpp b/lib/Analysis/IntervalPartition.cpp
index a6b85d4b90..2385a7d247 100644
--- a/lib/Analysis/IntervalPartition.cpp
+++ b/lib/Analysis/IntervalPartition.cpp
@@ -15,7 +15,7 @@
#include "llvm/Analysis/IntervalIterator.h"
using namespace llvm;
-static RegisterAnalysis<IntervalPartition>
+static RegisterPass<IntervalPartition>
X("intervals", "Interval Partition Construction", true);
//===----------------------------------------------------------------------===//
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp
index a91c201e0c..907cf5f4fe 100644
--- a/lib/Analysis/LoopInfo.cpp
+++ b/lib/Analysis/LoopInfo.cpp
@@ -25,7 +25,7 @@
#include <iostream>
using namespace llvm;
-static RegisterAnalysis<LoopInfo>
+static RegisterPass<LoopInfo>
X("loops", "Natural Loop Construction", true);
//===----------------------------------------------------------------------===//
diff --git a/lib/Analysis/PostDominators.cpp b/lib/Analysis/PostDominators.cpp
index e195d7a4c7..ec7f7c7546 100644
--- a/lib/Analysis/PostDominators.cpp
+++ b/lib/Analysis/PostDominators.cpp
@@ -23,7 +23,7 @@ using namespace llvm;
// ImmediatePostDominators Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<ImmediatePostDominators>
+static RegisterPass<ImmediatePostDominators>
D("postidom", "Immediate Post-Dominators Construction", true);
unsigned ImmediatePostDominators::DFSPass(BasicBlock *V, InfoRec &VInfo,
@@ -145,7 +145,7 @@ bool ImmediatePostDominators::runOnFunction(Function &F) {
// PostDominatorSet Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<PostDominatorSet>
+static RegisterPass<PostDominatorSet>
B("postdomset", "Post-Dominator Set Construction", true);
// Postdominator set construction. This converts the specified function to only
@@ -212,7 +212,7 @@ bool PostDominatorSet::runOnFunction(Function &F) {
// PostDominatorTree Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<PostDominatorTree>
+static RegisterPass<PostDominatorTree>
F("postdomtree", "Post-Dominator Tree Construction", true);
DominatorTreeBase::Node *PostDominatorTree::getNodeForBlock(BasicBlock *BB) {
@@ -258,7 +258,7 @@ void PostDominatorTree::calculate(const ImmediatePostDominators &IPD) {
// PostETForest Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<PostETForest>
+static RegisterPass<PostETForest>
G("postetforest", "Post-ET-Forest Construction", true);
ETNode *PostETForest::getNodeForBlock(BasicBlock *BB) {
@@ -322,7 +322,7 @@ void PostETForest::calculate(const ImmediatePostDominators &ID) {
// PostDominanceFrontier Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<PostDominanceFrontier>
+static RegisterPass<PostDominanceFrontier>
H("postdomfrontier", "Post-Dominance Frontier Construction", true);
const DominanceFrontier::DomSetType &
diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp
index 37c6a44ee8..289297cf3a 100644
--- a/lib/Analysis/ScalarEvolution.cpp
+++ b/lib/Analysis/ScalarEvolution.cpp
@@ -80,7 +80,7 @@
using namespace llvm;
namespace {
- RegisterAnalysis<ScalarEvolution>
+ RegisterPass<ScalarEvolution>
R("scalar-evolution", "Scalar Evolution Analysis");
Statistic<>
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index 7e3bec9381..4f34881cf0 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -38,7 +38,7 @@
using namespace llvm;
namespace {
- RegisterAnalysis<LiveIntervals> X("liveintervals", "Live Interval Analysis");
+ RegisterPass<LiveIntervals> X("liveintervals", "Live Interval Analysis");
static Statistic<> numIntervals
("liveintervals", "Number of original intervals");
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp
index 46a8012ae3..4f203e983b 100644
--- a/lib/CodeGen/LiveVariables.cpp
+++ b/lib/CodeGen/LiveVariables.cpp
@@ -38,7 +38,7 @@
#include <iostream>
using namespace llvm;
-static RegisterAnalysis<LiveVariables> X("livevars", "Live Variable Analysis");
+static RegisterPass<LiveVariables> X("livevars", "Live Variable Analysis");
void LiveVariables::VarInfo::dump() const {
std::cerr << "Register Defined by: ";
diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp
index f079acfdb4..9f7e5d9365 100644
--- a/lib/VMCore/Dominators.cpp
+++ b/lib/VMCore/Dominators.cpp
@@ -44,7 +44,7 @@ using namespace llvm;
//
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<ImmediateDominators>
+static RegisterPass<ImmediateDominators>
C("idom", "Immediate Dominators Construction", true);
unsigned ImmediateDominators::DFSPass(BasicBlock *V, InfoRec &VInfo,
@@ -243,7 +243,7 @@ void ImmediateDominatorsBase::print(std::ostream &o, const Module* ) const {
// DominatorSet Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<DominatorSet>
+static RegisterPass<DominatorSet>
B("domset", "Dominator Set Construction", true);
// dominates - Return true if A dominates B. This performs the special checks
@@ -343,7 +343,7 @@ void DominatorSetBase::print(std::ostream &o, const Module* ) const {
// DominatorTree Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<DominatorTree>
+static RegisterPass<DominatorTree>
E("domtree", "Dominator Tree Construction", true);
// DominatorTreeBase::reset - Free all of the tree node memory.
@@ -434,7 +434,7 @@ void DominatorTreeBase::print(std::ostream &o, const Module* ) const {
// DominanceFrontier Implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<DominanceFrontier>
+static RegisterPass<DominanceFrontier>
G("domfrontier", "Dominance Frontier Construction", true);
const DominanceFrontier::DomSetType &
@@ -813,7 +813,7 @@ ETNode *ETNode::NCA(ETNode *other) {
// ETForest implementation
//===----------------------------------------------------------------------===//
-static RegisterAnalysis<ETForest>
+static RegisterPass<ETForest>
D("etforest", "ET Forest Construction", true);
void ETForestBase::reset() {
diff --git a/tools/opt/AnalysisWrappers.cpp b/tools/opt/AnalysisWrappers.cpp
index b371d50ef3..5c815f2b02 100644
--- a/tools/opt/AnalysisWrappers.cpp
+++ b/tools/opt/AnalysisWrappers.cpp
@@ -61,7 +61,7 @@ namespace {
}
};
- RegisterAnalysis<ExternalFunctionsPassedConstants>
+ RegisterPass<ExternalFunctionsPassedConstants>
P1("externalfnconstants", "Print external fn callsites passed constants");
struct CallGraphPrinter : public ModulePass {
@@ -76,6 +76,6 @@ namespace {
}
};
- RegisterAnalysis<CallGraphPrinter>
+ RegisterPass<CallGraphPrinter>
P2("callgraph", "Print a call graph");
}
diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp
index 8826cd2a77..8ae0a0340c 100644
--- a/tools/opt/GraphPrinters.cpp
+++ b/tools/opt/GraphPrinters.cpp
@@ -72,6 +72,6 @@ namespace {
}
};
- RegisterAnalysis<CallGraphPrinter> P2("print-callgraph",
- "Print Call Graph to 'dot' file");
+ RegisterPass<CallGraphPrinter> P2("print-callgraph",
+ "Print Call Graph to 'dot' file");
}
diff --git a/tools/opt/PrintSCC.cpp b/tools/opt/PrintSCC.cpp
index c0adf5ca03..904442d11f 100644
--- a/tools/opt/PrintSCC.cpp
+++ b/tools/opt/PrintSCC.cpp
@@ -57,10 +57,10 @@ namespace {
}
};
- RegisterAnalysis<CFGSCC>
+ RegisterPass<CFGSCC>
Y("cfgscc", "Print SCCs of each function CFG");
- RegisterAnalysis<CallGraphSCC>
+ RegisterPass<CallGraphSCC>
Z("callscc", "Print SCCs of the Call Graph");
}