X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FSymbolTableListTraitsImpl.h;h=6d70401c89f732df7a4c031dcb7ba347bfb4efff;hb=3b91778659ec7d515ae1354022f0213e5de64d80;hp=a9971c8bbbaa63e5b2ffe0bb46be1b5d51305db6;hpb=7e70829632f82de15db187845666aaca6e04b792;p=oota-llvm.git diff --git a/lib/VMCore/SymbolTableListTraitsImpl.h b/lib/VMCore/SymbolTableListTraitsImpl.h index a9971c8bbba..6d70401c89f 100644 --- a/lib/VMCore/SymbolTableListTraitsImpl.h +++ b/lib/VMCore/SymbolTableListTraitsImpl.h @@ -1,5 +1,12 @@ //===-- llvm/SymbolTableListTraitsImpl.h - Implementation ------*- C++ -*--===// // +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// // This file implements the stickier parts of the SymbolTableListTraits class, // and is explicitly instantiated where needed to avoid defining all this code // in a widely used header. @@ -12,6 +19,8 @@ #include "llvm/SymbolTableListTraits.h" #include "llvm/SymbolTable.h" +namespace llvm { + template void SymbolTableListTraits @@ -20,18 +29,20 @@ void SymbolTableListTraits // Remove all of the items from the old symtab.. if (SymTabObject && !List.empty()) { - SymbolTable *SymTab = SymTabObject->getSymbolTable(); - for (iplist::iterator I = List.begin(); I != List.end(); ++I) - if (I->hasName()) SymTab->remove(I); + SymbolTable &SymTab = SymTabObject->getSymbolTable(); + for (typename iplist::iterator I = List.begin(); + I != List.end(); ++I) + if (I->hasName()) SymTab.remove(I); } SymTabObject = STO; // Add all of the items to the new symtab... if (SymTabObject && !List.empty()) { - SymbolTable *SymTab = SymTabObject->getSymbolTableSure(); - for (iplist::iterator I = List.begin(); I != List.end(); ++I) - if (I->hasName()) SymTab->insert(I); + SymbolTable &SymTab = SymTabObject->getSymbolTable(); + for (typename iplist::iterator I = List.begin(); + I != List.end(); ++I) + if (I->hasName()) SymTab.insert(I); } } @@ -42,7 +53,7 @@ void SymbolTableListTraits assert(V->getParent() == 0 && "Value already in a container!!"); V->setParent(ItemParent); if (V->hasName() && SymTabObject) - SymTabObject->getSymbolTableSure()->insert(V); + SymTabObject->getSymbolTable().insert(V); } template ::removeNodeFromList(ValueSubClass *V) { V->setParent(0); if (V->hasName() && SymTabObject) - SymTabObject->getSymbolTable()->remove(V); + SymTabObject->getSymbolTable().remove(V); } template ::transferNodesFromList(iplist > &L2, ilist_iterator first, ilist_iterator last) { - // We only have to do work here if transfering instructions between BB's + // We only have to do work here if transferring instructions between BBs ItemParentClass *NewIP = ItemParent, *OldIP = L2.ItemParent; if (NewIP == OldIP) return; // No work to do at all... - // We only have to update symbol table entries if we are transfering the + // We only have to update symbol table entries if we are transferring the // instructions to a different symtab object... SymTabClass *NewSTO = SymTabObject, *OldSTO = L2.SymTabObject; if (NewSTO != OldSTO) { @@ -72,17 +83,19 @@ void SymbolTableListTraits ValueSubClass &V = *first; bool HasName = V.hasName(); if (OldSTO && HasName) - OldSTO->getSymbolTable()->remove(&V); + OldSTO->getSymbolTable().remove(&V); V.setParent(NewIP); if (NewSTO && HasName) - NewSTO->getSymbolTableSure()->insert(&V); + NewSTO->getSymbolTable().insert(&V); } } else { - // Just transfering between blocks in the same function, simply update the + // Just transferring between blocks in the same function, simply update the // parent fields in the instructions... for (; first != last; ++first) first->setParent(NewIP); } } +} // End llvm namespace + #endif