summaryrefslogtreecommitdiff
path: root/include/llvm/BasicBlock.h
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-03-02 02:48:09 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-03-02 02:48:09 +0000
commitfc82fabe00b0b820e3c0d7fc9e289bace0295f11 (patch)
tree963a736756189f58a4bd042ddf745b895e40cbac /include/llvm/BasicBlock.h
parentfe0753efbac4e15d5e1b8a58b06788a86d7e2545 (diff)
downloadllvm-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.h16
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; }