From a7e26118a24eb65321cc89675dcdc473714c4eaf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Jun 2001 04:35:21 +0000 Subject: [PATCH] Add a new pop_back() method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ValueHolder.h | 1 + lib/VMCore/ValueHolderImpl.h | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/llvm/ValueHolder.h b/include/llvm/ValueHolder.h index 26ecd267f2c..18f6e3f40b9 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 9d0e87413fa..f19d71f5026 100644 --- a/lib/VMCore/ValueHolderImpl.h +++ b/lib/VMCore/ValueHolderImpl.h @@ -59,6 +59,21 @@ ValueSubclass *ValueHolder::remove(iterator &DI) { return i; } +template +ValueSubclass *ValueHolder::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 ValueSubclass *ValueHolder ::remove(const iterator &DI) {