diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-02-07 05:35:58 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-02-07 05:35:58 +0000 |
| commit | c8d5207b85dc3a80abf372f61ab5607bbf483727 (patch) | |
| tree | 809643f5e20ac3413e440217805c624129af5b42 /llvm/lib | |
| parent | afd6f2f4636fb3add042251e4b68b31779ee2370 (diff) | |
| download | bcm5719-llvm-c8d5207b85dc3a80abf372f61ab5607bbf483727.tar.gz bcm5719-llvm-c8d5207b85dc3a80abf372f61ab5607bbf483727.zip | |
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.
llvm-svn: 33983
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/TypeSymbolTable.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/llvm/lib/VMCore/TypeSymbolTable.cpp b/llvm/lib/VMCore/TypeSymbolTable.cpp index 6cc1055ebce..b145adc2388 100644 --- a/llvm/lib/VMCore/TypeSymbolTable.cpp +++ b/llvm/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()) { |

