Add a new pop_back() method
authorChris Lattner <sabre@nondot.org>
Sat, 30 Jun 2001 04:35:21 +0000 (04:35 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 30 Jun 2001 04:35:21 +0000 (04:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ValueHolder.h
lib/VMCore/ValueHolderImpl.h

index 26ecd267f2c8ea31a9dcee3c4f2e9c867e15697f..18f6e3f40b9caf38e5fb4afa2abbae802b810c7f 100644 (file)
@@ -85,6 +85,7 @@ public:
   ValueSubclass *remove(iterator &DI);         // Defined in ValueHolderImpl.h
   ValueSubclass *remove(const iterator &DI);   // Defined in ValueHolderImpl.h
   void           remove(ValueSubclass *D);     // Defined in ValueHolderImpl.h
+  ValueSubclass *pop_back();                   // Defined in ValueHolderImpl.h
 
   void push_front(ValueSubclass *Inst);        // Defined in ValueHolderImpl.h
   void push_back(ValueSubclass *Inst);         // Defined in ValueHolderImpl.h
index 9d0e87413fad4a6e4f00dfacaad6c3937e3cc858..f19d71f502606e1426ff5202684df2978560e9da 100644 (file)
@@ -59,6 +59,21 @@ ValueSubclass *ValueHolder<ValueSubclass,ItemParentType>::remove(iterator &DI) {
   return i;
 }
 
+template<class ValueSubclass, class ItemParentType>
+ValueSubclass *ValueHolder<ValueSubclass,ItemParentType>::pop_back() {
+  assert(!ValueList.empty() && "Can't pop_back an empty valuelist!");
+  ValueSubclass *i = ValueList.back();
+  ValueList.pop_back();
+  i->setParent(0);  // I don't own you anymore... byebye...
+  
+  // You don't get to be in the symbol table anymore... byebye
+  if (i->hasName() && Parent)
+    Parent->getSymbolTable()->remove(i);
+  
+  return i;
+}
+
+
 template<class ValueSubclass, class ItemParentType>
 ValueSubclass *ValueHolder<ValueSubclass,ItemParentType>
 ::remove(const iterator &DI) {