diff options
author | Chris Lattner <sabre@nondot.org> | 2001-06-27 23:29:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-06-27 23:29:41 +0000 |
commit | a576e17cedea4366c745f02692d97e5b52d3e54f (patch) | |
tree | 5f2688c64b436d7f5fd70d0a196fcba193db43fd /include | |
parent | eef4d787f0cb3d96b66d9b1e7f251c8584e1c721 (diff) | |
download | llvm-a576e17cedea4366c745f02692d97e5b52d3e54f.tar.gz llvm-a576e17cedea4366c745f02692d97e5b52d3e54f.tar.bz2 llvm-a576e17cedea4366c745f02692d97e5b52d3e54f.tar.xz |
Added methods to make dealing with switches and branch instructions
more tolerable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/iTerminators.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/include/llvm/iTerminators.h b/include/llvm/iTerminators.h index 0d1cde0d3f..168d91d027 100644 --- a/include/llvm/iTerminators.h +++ b/include/llvm/iTerminators.h @@ -70,7 +70,10 @@ public: virtual Instruction *clone() const { return new BranchInst(*this); } virtual void dropAllReferences(); - + + inline const Value *getCondition() const { return Condition; } + inline Value *getCondition() { return Condition; } + inline bool isUnconditional() const { return Condition == 0 || !FalseDest; } @@ -83,6 +86,9 @@ public: virtual const Value *getOperand(unsigned i) const; virtual bool setOperand(unsigned i, Value *Val); virtual unsigned getNumOperands() const { return isUnconditional() ? 1 : 3; } + inline BasicBlock *getSuccessor(unsigned idx) { + return (BasicBlock*)((const BranchInst *)this)->getSuccessor(idx); + } // Additionally, they must provide a method to get at the successors of this // terminator instruction. If 'idx' is out of range, a null pointer shall be @@ -114,6 +120,18 @@ public: virtual Instruction *clone() const { return new SwitchInst(*this); } + // Accessor Methods for Switch stmt + // + inline dest_iterator dest_begin() { return Destinations.begin(); } + inline dest_iterator dest_end () { return Destinations.end(); } + inline dest_const_iterator dest_begin() const { return Destinations.begin(); } + inline dest_const_iterator dest_end () const { return Destinations.end(); } + + inline const Value *getCondition() const { return Val; } + inline Value *getCondition() { return Val; } + inline const BasicBlock *getDefaultDest() const { return DefaultDest; } + inline BasicBlock *getDefaultDest() { return DefaultDest; } + void dest_push_back(ConstPoolVal *OnVal, BasicBlock *Dest); virtual string getOpcode() const { return "switch"; } @@ -131,6 +149,9 @@ public: // virtual const BasicBlock *getSuccessor(unsigned idx) const; virtual unsigned getNumSuccessors() const { return 1+Destinations.size(); } + inline BasicBlock *getSuccessor(unsigned idx) { + return (BasicBlock*)((const SwitchInst *)this)->getSuccessor(idx); + } }; #endif |