void calcLiveVarSetsForBB(const BasicBlock *BB);
public:
- static AnalysisID ID; // We are an analysis, we must have an ID
-
// --------- Implement the FunctionPass interface ----------------------
// runOnFunction - Perform analysis, update internal data structures.
void calcLiveVarSetsForBB(const BasicBlock *BB);
public:
- static AnalysisID ID; // We are an analysis, we must have an ID
-
// --------- Implement the FunctionPass interface ----------------------
// runOnFunction - Perform analysis, update internal data structures.
#include <algorithm>
static RegisterAnalysis<CallGraph> X("callgraph", "Call Graph Construction");
-AnalysisID CallGraph::ID = X;
// getNodeFor - Return the node for the specified function or create one if it
// does not already exist.
static RegisterAnalysis<FindUnsafePointerTypes>
X("unsafepointertypes", "Find Unsafe Pointer Types");
-AnalysisID FindUnsafePointerTypes::ID = X;
// Provide a command line option to turn on printing of which instructions cause
// a type to become invalid
static RegisterAnalysis<FindUsedTypes>
X("printusedtypes", "Find Used Types");
-AnalysisID FindUsedTypes::ID = X;
// IncorporateType - Incorporate one type and all of its subtypes into the
// collection of used types.
static RegisterAnalysis<IntervalPartition>
X("intervals", "Interval Partition Construction", true);
-AnalysisID IntervalPartition::ID = X;
-
//===----------------------------------------------------------------------===//
// IntervalPartition Implementation
//===----------------------------------------------------------------------===//
static RegisterAnalysis<LoopInfo>
X("loops", "Natural Loop Construction", true);
-AnalysisID LoopInfo::ID = X;
//===----------------------------------------------------------------------===//
// Loop implementation
static RegisterAnalysis<PostDominatorSet>
B("postdomset", "Post-Dominator Set Construction", true);
-AnalysisID PostDominatorSet::ID = B;
// Postdominator set construction. This converts the specified function to only
// have a single exit node (return stmt), then calculates the post dominance
static RegisterAnalysis<ImmediatePostDominators>
D("postidom", "Immediate Post-Dominators Construction", true);
-AnalysisID ImmediatePostDominators::ID = D;
//===----------------------------------------------------------------------===//
// PostDominatorTree Implementation
static RegisterAnalysis<PostDominatorTree>
F("postdomtree", "Post-Dominator Tree Construction", true);
-AnalysisID PostDominatorTree::ID = F;
void PostDominatorTree::calculate(const PostDominatorSet &DS) {
Nodes[Root] = new Node(Root, 0); // Add a node for the root...
static RegisterAnalysis<PostDominanceFrontier>
H("postdomfrontier", "Post-Dominance Frontier Construction", true);
-AnalysisID PostDominanceFrontier::ID = H;
const DominanceFrontier::DomSetType &
PostDominanceFrontier::calculate(const PostDominatorTree &DT,
static RegisterOpt<UnifyFunctionExitNodes>
X("mergereturn", "Unify function exit nodes");
-AnalysisID UnifyFunctionExitNodes::ID = X;
// UnifyAllExitNodes - Unify all exit nodes of the CFG by creating a new
// BasicBlock, and converting all returns to unconditional branches to this