Add new getIncomingValueForBlock method
authorChris Lattner <sabre@nondot.org>
Thu, 6 Mar 2003 16:36:28 +0000 (16:36 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 6 Mar 2003 16:36:28 +0000 (16:36 +0000)
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

index c9d2a71ecbdfa2400bbd4bf1cf829f345b0614fe..eba5a735542c2391dff74f371151c143d371c02f 100644 (file)
@@ -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) {