diff options
author | Chris Lattner <sabre@nondot.org> | 2001-06-30 04:35:21 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-06-30 04:35:21 +0000 |
commit | a7e26118a24eb65321cc89675dcdc473714c4eaf (patch) | |
tree | e2090f53edb41207385512e7ed16bfe4a4786758 | |
parent | b9b8959091517b47675f7126b40bd50bcfdbb384 (diff) |
Add a new pop_back() method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ValueHolder.h | 1 | ||||
-rw-r--r-- | lib/VMCore/ValueHolderImpl.h | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/llvm/ValueHolder.h b/include/llvm/ValueHolder.h index 26ecd267f2..18f6e3f40b 100644 --- a/include/llvm/ValueHolder.h +++ b/include/llvm/ValueHolder.h @@ -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 diff --git a/lib/VMCore/ValueHolderImpl.h b/lib/VMCore/ValueHolderImpl.h index 9d0e87413f..f19d71f502 100644 --- a/lib/VMCore/ValueHolderImpl.h +++ b/lib/VMCore/ValueHolderImpl.h @@ -60,6 +60,21 @@ ValueSubclass *ValueHolder<ValueSubclass,ItemParentType>::remove(iterator &DI) { } 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) { assert(DI != ValueList.end() && |