From 58f84d4b2ddee76d594a1cdfeffaea6417ed0a20 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 7 Feb 2007 05:35:58 +0000 Subject: Eliminate the O(n) version of TypeSymbolTable::remove, it is dead. When inserting a type into the type symbol table, only compute unique name if not in symtab already. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33983 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/TypeSymbolTable.cpp | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'lib/VMCore/TypeSymbolTable.cpp') diff --git a/lib/VMCore/TypeSymbolTable.cpp b/lib/VMCore/TypeSymbolTable.cpp index 6cc1055..b145adc 100644 --- a/lib/VMCore/TypeSymbolTable.cpp +++ b/lib/VMCore/TypeSymbolTable.cpp @@ -47,17 +47,6 @@ Type* TypeSymbolTable::lookup(const std::string& Name) const { return 0; } -// Erase a specific type from the symbol table -bool TypeSymbolTable::remove(Type *N) { - for (iterator TI = tmap.begin(), TE = tmap.end(); TI != TE; ++TI) { - if (TI->second == N) { - this->remove(TI); - return true; - } - } - return false; -} - // remove - Remove a type from the symbol table... Type* TypeSymbolTable::remove(iterator Entry) { assert(Entry != tmap.end() && "Invalid entry to remove!"); @@ -88,19 +77,30 @@ Type* TypeSymbolTable::remove(iterator Entry) { void TypeSymbolTable::insert(const std::string& Name, const Type* T) { assert(T && "Can't insert null type into symbol table!"); - // Check to see if there is a naming conflict. If so, rename this type! - std::string UniqueName = Name; - if (lookup(Name)) - UniqueName = getUniqueName(Name); - + if (tmap.insert(make_pair(Name, T)).second) { + // Type inserted fine with no conflict. + #if DEBUG_SYMBOL_TABLE - dump(); - cerr << " Inserting type: " << UniqueName << ": " - << T->getDescription() << "\n"; + dump(); + cerr << " Inserted type: " << Name << ": " << T->getDescription() << "\n"; +#endif + } else { + // If there is a name conflict... + + // Check to see if there is a naming conflict. If so, rename this type! + std::string UniqueName = Name; + if (lookup(Name)) + UniqueName = getUniqueName(Name); + +#if DEBUG_SYMBOL_TABLE + dump(); + cerr << " Inserting type: " << UniqueName << ": " + << T->getDescription() << "\n"; #endif - // Insert the tmap entry - tmap.insert(make_pair(UniqueName, T)); + // Insert the tmap entry + tmap.insert(make_pair(UniqueName, T)); + } // If we are adding an abstract type, add the symbol table to it's use list. if (T->isAbstract()) { -- cgit v1.1