diff options
author | Chris Lattner <sabre@nondot.org> | 2003-09-10 20:34:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-09-10 20:34:51 +0000 |
commit | f46057be77c39d972a2aacb9743ce265efa60b70 (patch) | |
tree | 3252af7d174e31f02f50c6af960e66ede0a65fc0 /include | |
parent | d0b52cf3e744356d0242b55e94e10889dd79947f (diff) | |
download | external_llvm-f46057be77c39d972a2aacb9743ce265efa60b70.zip external_llvm-f46057be77c39d972a2aacb9743ce265efa60b70.tar.gz external_llvm-f46057be77c39d972a2aacb9743ce265efa60b70.tar.bz2 |
Expand the pass to unify all of the unwind blocks as well
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8456 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h index 01f055e..431dd8b 100644 --- a/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h +++ b/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h @@ -1,9 +1,10 @@ -//===-- UnifyFunctionExitNodes.h - Ensure fn's have one return ---*- C++ -*--=// +//===-- 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. 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. +// This pass is used to ensure that functions have at most one return and one +// unwind instruction in them. Additionally, it keeps track of which node is +// the new exit node of the CFG. If there are no return or unwind instructions +// in the function, the getReturnBlock/getUnwindBlock methods will return a null +// pointer. // //===----------------------------------------------------------------------===// @@ -13,22 +14,22 @@ #include "llvm/Pass.h" struct UnifyFunctionExitNodes : public FunctionPass { - BasicBlock *ExitNode; + BasicBlock *ReturnBlock, *UnwindBlock; public: - UnifyFunctionExitNodes() : ExitNode(0) {} + UnifyFunctionExitNodes() : ReturnBlock(0), UnwindBlock(0) {} // We can preserve non-critical-edgeness when we unify function exit nodes virtual void getAnalysisUsage(AnalysisUsage &AU) const; - // getExitNode - Return the new single (or nonexistant) exit node of the CFG. + // getReturn|UnwindBlock - Return the new single (or nonexistant) return or + // unwind basic blocks in the CFG. // - BasicBlock *getExitNode() const { return ExitNode; } + BasicBlock *getReturnBlock() const { return ReturnBlock; } + BasicBlock *getUnwindBlock() const { return UnwindBlock; } virtual bool runOnFunction(Function &F); }; -static inline Pass *createUnifyFunctionExitNodesPass() { - return new UnifyFunctionExitNodes(); -} +Pass *createUnifyFunctionExitNodesPass(); #endif |