From 566f0ee4ed6773e04d4426783ef79cf80184fac6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 6 Mar 2003 16:36:28 +0000 Subject: [PATCH] Add new getIncomingValueForBlock method Relax a bit about constness git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5709 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/iPHINode.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/include/llvm/iPHINode.h b/include/llvm/iPHINode.h index c9d2a71ecbd..eba5a735542 100644 --- a/include/llvm/iPHINode.h +++ b/include/llvm/iPHINode.h @@ -33,13 +33,12 @@ public: unsigned getNumIncomingValues() const { return Operands.size()/2; } /// getIncomingValue - Return incoming value #x - const Value *getIncomingValue(unsigned i) const { - return Operands[i*2]; - } - Value *getIncomingValue(unsigned i) { + Value *getIncomingValue(unsigned i) const { + assert(i*2 < Operands.size() && "Invalid value number!"); return Operands[i*2]; } void setIncomingValue(unsigned i, Value *V) { + assert(i*2 < Operands.size() && "Invalid value number!"); Operands[i*2] = V; } inline unsigned getOperandNumForIncomingValue(unsigned i) { @@ -47,16 +46,15 @@ public: } /// getIncomingBlock - Return incoming basic block #x - const BasicBlock *getIncomingBlock(unsigned i) const { - return (const BasicBlock*)Operands[i*2+1].get(); - } - inline BasicBlock *getIncomingBlock(unsigned i) { + BasicBlock *getIncomingBlock(unsigned i) const { + assert(i*2+1 < Operands.size() && "Invalid value number!"); return (BasicBlock*)Operands[i*2+1].get(); } - inline void setIncomingBlock(unsigned i, BasicBlock *BB) { + void setIncomingBlock(unsigned i, BasicBlock *BB) { + assert(i*2+1 < Operands.size() && "Invalid value number!"); Operands[i*2+1] = (Value*)BB; } - inline unsigned getOperandNumForIncomingBlock(unsigned i) { + unsigned getOperandNumForIncomingBlock(unsigned i) { return i*2+1; } @@ -93,6 +91,10 @@ public: return -1; } + Value *getIncomingValueForBlock(const BasicBlock *BB) const { + return getIncomingValue(getBasicBlockIndex(BB)); + } + /// Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const PHINode *) { return true; } static inline bool classof(const Instruction *I) {