mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 05:00:26 +00:00
Cleanup implementation a bit + comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2527 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b444a1fff4
commit
96bcfc30dc
@ -1,8 +1,9 @@
|
||||
//===-- UnifyFunctionExitNodes.h - Ensure fn's have one return ---*- C++ -*--=//
|
||||
//
|
||||
// This pass is used to ensure that functions have at most one return
|
||||
// instruction in them. It also holds onto the return instruction of the last
|
||||
// unified function.
|
||||
// instruction in them. Additionally, it keeps track of which node is the new
|
||||
// exit node of the CFG. If there are no exit nodes in the CFG, the getExitNode
|
||||
// method will return a null pointer.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@ -17,26 +18,13 @@ public:
|
||||
static AnalysisID ID; // Pass ID
|
||||
UnifyFunctionExitNodes(AnalysisID id = ID) : ExitNode(0) { assert(ID == id); }
|
||||
|
||||
virtual const char *getPassName() const { return "Unify Function Exit Nodes";}
|
||||
|
||||
// UnifyAllExitNodes - Unify all exit nodes of the CFG by creating a new
|
||||
// BasicBlock, and converting all returns to unconditional branches to this
|
||||
// new basic block. The singular exit node is returned in ExitNode.
|
||||
// getExitNode - Return the new single (or nonexistant) exit node of the CFG.
|
||||
//
|
||||
// If there are no return stmts in the function, a null pointer is returned.
|
||||
//
|
||||
static bool doit(Function *F, BasicBlock *&ExitNode);
|
||||
|
||||
|
||||
virtual bool runOnFunction(Function *F) {
|
||||
return doit(F, ExitNode);
|
||||
}
|
||||
|
||||
BasicBlock *getExitNode() const { return ExitNode; }
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addProvided(ID); // Provide self!
|
||||
}
|
||||
virtual const char *getPassName() const { return "Unify Function Exit Nodes";}
|
||||
virtual bool runOnFunction(Function *F);
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addProvided(ID); }
|
||||
};
|
||||
|
||||
static inline Pass *createUnifyFunctionExitNodesPass() {
|
||||
|
Loading…
Reference in New Issue
Block a user