summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/VMCore/ValueHolderImpl.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/ValueHolderImpl.h b/llvm/lib/VMCore/ValueHolderImpl.h
index 3eb7e754569..3f20a173e91 100644
--- a/llvm/lib/VMCore/ValueHolderImpl.h
+++ b/llvm/lib/VMCore/ValueHolderImpl.h
@@ -96,6 +96,23 @@ ValueSubclass *ValueHolder<ValueSubclass,ItemParentType,SymTabType>
return i;
}
+
+template<class ValueSubclass, class ItemParentType, class SymTabType>
+void ValueHolder<ValueSubclass,ItemParentType,SymTabType>
+::remove(iterator S, iterator E) {
+ for (iterator I = S; I != E; ++I) {
+ ValueSubclass *i = *I;
+ 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);
+ }
+
+ ValueList.erase(S, E);
+}
+
+
template<class ValueSubclass, class ItemParentType, class SymTabType>
ValueSubclass *ValueHolder<ValueSubclass,ItemParentType,SymTabType>
::replaceWith(iterator &DI, ValueSubclass *NewVal) {
OpenPOWER on IntegriCloud