summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-05-06 02:59:34 +0000
committerChris Lattner <sabre@nondot.org>2002-05-06 02:59:34 +0000
commit4ba780d26e682ad6f832e902ce650313fd8eed26 (patch)
treeb7a340b4e07987b9862ae0dd1d7e154d0b8bb5c6 /llvm/lib
parentdac95a012bd722a2fcce1434cd39748ce3fc16c0 (diff)
downloadbcm5719-llvm-4ba780d26e682ad6f832e902ce650313fd8eed26.tar.gz
bcm5719-llvm-4ba780d26e682ad6f832e902ce650313fd8eed26.zip
Implement two iterator remove method
llvm-svn: 2467
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