diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/ValueHolderImpl.h | 17 |
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) { |

