diff --git a/lib/VMCore/ValueHolderImpl.h b/lib/VMCore/ValueHolderImpl.h index 3eb7e754569..3f20a173e91 100644 --- a/lib/VMCore/ValueHolderImpl.h +++ b/lib/VMCore/ValueHolderImpl.h @@ -96,6 +96,23 @@ ValueSubclass *ValueHolder return i; } + +template +void ValueHolder +::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 ValueSubclass *ValueHolder ::replaceWith(iterator &DI, ValueSubclass *NewVal) {