diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2008-03-02 02:48:09 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2008-03-02 02:48:09 +0000 |
commit | fc82fabe00b0b820e3c0d7fc9e289bace0295f11 (patch) | |
tree | 963a736756189f58a4bd042ddf745b895e40cbac /include/llvm/BasicBlock.h | |
parent | fe0753efbac4e15d5e1b8a58b06788a86d7e2545 (diff) | |
download | llvm-fc82fabe00b0b820e3c0d7fc9e289bace0295f11.tar.gz llvm-fc82fabe00b0b820e3c0d7fc9e289bace0295f11.tar.bz2 llvm-fc82fabe00b0b820e3c0d7fc9e289bace0295f11.tar.xz |
Add an unwind_to field to basic blocks, making them Users instead of Values.
This is the first checkin for PR1269, the new EH infrastructure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47802 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/BasicBlock.h')
-rw-r--r-- | include/llvm/BasicBlock.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/include/llvm/BasicBlock.h b/include/llvm/BasicBlock.h index d99271b196..5a1c5a45b2 100644 --- a/include/llvm/BasicBlock.h +++ b/include/llvm/BasicBlock.h @@ -49,13 +49,14 @@ template<> struct ilist_traits<Instruction> /// modifying a program. However, the verifier will ensure that basic blocks /// are "well formed". /// @brief LLVM Basic Block Representation -class BasicBlock : public Value { // Basic blocks are data objects also +class BasicBlock : public User { // Basic blocks are data objects also public: typedef iplist<Instruction> InstListType; private : InstListType InstList; BasicBlock *Prev, *Next; // Next and Prev links for our intrusive linked list Function *Parent; + Use unwindDest; void setParent(Function *parent); void setNext(BasicBlock *N) { Next = N; } @@ -75,9 +76,20 @@ public: /// InsertBefore is null), or before the specified basic block. /// explicit BasicBlock(const std::string &Name = "", Function *Parent = 0, - BasicBlock *InsertBefore = 0); + BasicBlock *InsertBefore = 0, BasicBlock *unwindDest = 0); ~BasicBlock(); + /// getUnwindDest - Returns the BasicBlock that flow will enter if an unwind + /// instruction occurs in this block. May be null, in which case unwinding + /// is undefined in this block. + const BasicBlock *getUnwindDest() const; + BasicBlock *getUnwindDest(); + + /// setUnwindDest - Set which BasicBlock flow will enter if an unwind is + /// executed within this block. It may be set to null if unwinding is not + /// permitted in this block. + void setUnwindDest(BasicBlock *unwindDest); + /// getParent - Return the enclosing method, or null if none /// const Function *getParent() const { return Parent; } |