//===---------------------------------------------------------------------
// Pass infrastructure interface glue code...
//
- static AnalysisID ID; // We are an analysis, we must have an ID
-
CallGraph() : Root(0) {}
~CallGraph() { destroy(); }
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // DataStructure Analysis ID
-
~LocalDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // BUDataStructure Analysis ID
-
~BUDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // TDDataStructure Analysis ID
-
~TDDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // DataStructure Analysis ID
-
~LocalDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // BUDataStructure Analysis ID
-
~BUDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// DSInfo, one graph for each function
std::map<const Function*, DSGraph*> DSInfo;
public:
- static AnalysisID ID; // TDDataStructure Analysis ID
-
~TDDataStructures() { releaseMemory(); }
virtual bool run(Module &M);
// compute a normal dominator set.
//
struct DominatorSet : public DominatorSetBase {
- static AnalysisID ID; // Build dominator set
-
DominatorSet() : DominatorSetBase(false) {}
virtual bool runOnFunction(Function &F);
// compute the post-dominator set.
//
struct PostDominatorSet : public DominatorSetBase {
- static AnalysisID ID; // Build post-dominator set
-
PostDominatorSet() : DominatorSetBase(true) {}
virtual bool runOnFunction(Function &F);
// is used to compute a normal immediate dominator set.
//
struct ImmediateDominators : public ImmediateDominatorsBase {
- static AnalysisID ID; // Build immediate dominators
-
ImmediateDominators() : ImmediateDominatorsBase(false) {}
virtual bool runOnFunction(Function &F) {
// that is used to compute the immediate post-dominators.
//
struct ImmediatePostDominators : public ImmediateDominatorsBase {
- static AnalysisID ID; // Build immediate postdominators
-
ImmediatePostDominators() : ImmediateDominatorsBase(true) {}
virtual bool runOnFunction(Function &F) {
// compute a normal dominator tree.
//
struct DominatorTree : public DominatorTreeBase {
- static AnalysisID ID; // Build dominator tree
-
DominatorTree() : DominatorTreeBase(false) {}
virtual bool runOnFunction(Function &F) {
// compute the a post-dominator tree.
//
struct PostDominatorTree : public DominatorTreeBase {
- static AnalysisID ID; // Build immediate postdominators
-
PostDominatorTree() : DominatorTreeBase(true) {}
virtual bool runOnFunction(Function &F) {
// compute a normal dominator tree.
//
struct DominanceFrontier : public DominanceFrontierBase {
- static AnalysisID ID; // Build dominance frontier
-
DominanceFrontier() : DominanceFrontierBase(false) {}
virtual bool runOnFunction(Function &) {
// used to compute the a post-dominance frontier.
//
struct PostDominanceFrontier : public DominanceFrontierBase {
- static AnalysisID ID; // Build post dominance frontier
-
PostDominanceFrontier() : DominanceFrontierBase(true) {}
virtual bool runOnFunction(Function &) {
// UnsafeTypes - Set of types that are not safe to transform.
std::set<PointerType*> UnsafeTypes;
public:
- static AnalysisID ID; // We are an analysis, we must have an ID
-
// Accessor for underlying type set...
inline const std::set<PointerType*> &getUnsafeTypes() const {
return UnsafeTypes;
class FindUsedTypes : public Pass {
std::set<const Type *> UsedTypes;
public:
- // FindUsedTypes ctor - This pass can optionally include types that are
- // referenced only in symbol tables, but the default is not to.
- //
- static AnalysisID ID;
-
// getTypes - After the pass has been run, return the set containing all of
// the types used in the module.
//
std::vector<Interval*> Intervals;
public:
- static AnalysisID ID; // We are an analysis, we must have an ID
-
IntervalPartition() : RootInterval(0) {}
// run - Calculate the interval partition for this function
std::map<BasicBlock*, Loop*> BBMap;
std::vector<Loop*> TopLevelLoops;
public:
- static AnalysisID ID; // LoopInfo Analysis ID
-
// LoopInfo ctor - Calculate the natural loop information for a CFG
~LoopInfo() { releaseMemory(); }
struct UnifyFunctionExitNodes : public FunctionPass {
BasicBlock *ExitNode;
public:
- static AnalysisID ID; // Pass ID
- UnifyFunctionExitNodes(AnalysisID id = ID) : ExitNode(0) { assert(ID == id); }
+ UnifyFunctionExitNodes() : ExitNode(0) {}
// getExitNode - Return the new single (or nonexistant) exit node of the CFG.
//
static RegisterAnalysis<BUDataStructures>
X("budatastructure", "Bottom-up Data Structure Analysis Closure");
-AnalysisID BUDataStructures::ID = X;
// releaseMemory - If the pass pipeline is done with this pass, we can release
// our memory... here...
static RegisterAnalysis<LocalDataStructures>
X("datastructure", "Local Data Structure Analysis");
-AnalysisID LocalDataStructures::ID = X;
//===----------------------------------------------------------------------===//
// GraphBuilder Class
static RegisterAnalysis<TDDataStructures>
Y("tddatastructure", "Top-down Data Structure Analysis Closure");
-AnalysisID TDDataStructures::ID = Y;
// releaseMemory - If the pass pipeline is done with this pass, we can release
// our memory... here...
static RegisterAnalysis<FunctionLiveVarInfo>
X("livevar", "Live Variable Analysis");
-AnalysisID FunctionLiveVarInfo::ID = X;
LiveVarDebugLevel_t DEBUG_LV;
static RegisterAnalysis<FunctionLiveVarInfo>
X("livevar", "Live Variable Analysis");
-AnalysisID FunctionLiveVarInfo::ID = X;
LiveVarDebugLevel_t DEBUG_LV;