Rename SwitchInst::dest_push_back -> addCase
Add new removeCase method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8088 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/iTerminators.h b/include/llvm/iTerminators.h
index 16cfb19..434fe67 100644
--- a/include/llvm/iTerminators.h
+++ b/include/llvm/iTerminators.h
@@ -147,7 +147,15 @@
     return cast<BasicBlock>(Operands[1].get());
   }
 
-  void dest_push_back(Constant *OnVal, BasicBlock *Dest);
+  /// addCase - Add an entry to the switch instruction...
+  ///
+  void addCase(Constant *OnVal, BasicBlock *Dest);
+
+  /// removeCase - This method removes the specified successor from the switch
+  /// instruction.  Note that this cannot be used to remove the default
+  /// destination (successor #0).
+  ///
+  void removeCase(unsigned idx);
 
   virtual const BasicBlock *getSuccessor(unsigned idx) const {
     assert(idx < getNumSuccessors() &&"Successor idx out of range for switch!");
diff --git a/lib/VMCore/iSwitch.cpp b/lib/VMCore/iSwitch.cpp
index a63adfd..e1cb00e 100644
--- a/lib/VMCore/iSwitch.cpp
+++ b/lib/VMCore/iSwitch.cpp
@@ -25,7 +25,19 @@
   }
 }
 
-void SwitchInst::dest_push_back(Constant *OnVal, BasicBlock *Dest) {
+/// addCase - Add an entry to the switch instruction...
+///
+void SwitchInst::addCase(Constant *OnVal, BasicBlock *Dest) {
   Operands.push_back(Use((Value*)OnVal, this));
   Operands.push_back(Use((Value*)Dest, this));
 }
+
+/// removeCase - This method removes the specified successor from the switch
+/// instruction.  Note that this cannot be used to remove the default
+/// destination (successor #0).
+///
+void SwitchInst::removeCase(unsigned idx) {
+  assert(idx != 0 && "Cannot remove the default case!");
+  assert(idx*2 < Operands.size() && "Successor index out of range!!!");
+  Operands.erase(Operands.begin()+idx*2, Operands.begin()+(idx+1)*2);  
+}