16 #ifndef LLVM_SYMBOLTABLELISTTRAITS_IMPL_H
17 #define LLVM_SYMBOLTABLELISTTRAITS_IMPL_H
27 template<
typename ValueSubClass,
typename ItemParentClass>
28 template<
typename TPtr>
41 if (OldST == NewST)
return;
45 if (ItemList.
empty())
return;
50 I != ItemList.
end(); ++
I)
52 OldST->removeValueName(
I->getValueName());
58 I != ItemList.
end(); ++
I)
60 NewST->reinsertValue(
I);
65 template<
typename ValueSubClass,
typename ItemParentClass>
68 assert(V->getParent() == 0 &&
"Value already in a container!!");
69 ItemParentClass *Owner = getListOwner();
76 template<
typename ValueSubClass,
typename ItemParentClass>
82 ST->removeValueName(V->getValueName());
85 template<
typename ValueSubClass,
typename ItemParentClass>
91 ItemParentClass *NewIP = getListOwner(), *OldIP = L2.getListOwner();
92 if (NewIP == OldIP)
return;
99 for (; first != last; ++first) {
100 ValueSubClass &V = *first;
101 bool HasName = V.hasName();
102 if (OldST && HasName)
103 OldST->removeValueName(V.getValueName());
105 if (NewST && HasName)
106 NewST->reinsertValue(&V);
111 for (; first != last; ++first)
112 first->setParent(NewIP);
void transferNodesFromList(ilist_traits< ValueSubClass > &L2, ilist_iterator< ValueSubClass > first, ilist_iterator< ValueSubClass > last)
void removeNodeFromList(ValueSubClass *V)
void setSymTabObject(TPtr *, TPtr)
bool LLVM_ATTRIBUTE_UNUSED_RESULT empty() const
void addNodeToList(ValueSubClass *V)
static bool getSymTab(Value *V, ValueSymbolTable *&ST)