diff options
author | Chris Lattner <sabre@nondot.org> | 2005-03-06 05:46:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-03-06 05:46:41 +0000 |
commit | 290d881f844deb2707a9721bc3691b291bf08562 (patch) | |
tree | f9deabc9b902c35c315ac1d3e4ce75d76da06f26 /llvm/lib/VMCore/SymbolTable.cpp | |
parent | aa4138a5da9e28a72ebbb8a7ab2ed43cd5b7724d (diff) | |
download | bcm5719-llvm-290d881f844deb2707a9721bc3691b291bf08562.tar.gz bcm5719-llvm-290d881f844deb2707a9721bc3691b291bf08562.zip |
Delete the really inefficient method: void remove(const Type* Typ);
Speed up the symbol stripping code by avoiding a linear search of the
type table.
Get rid of removeEntry(type_iterator), since 'remove' is exactly the same
operation.
llvm-svn: 20481
Diffstat (limited to 'llvm/lib/VMCore/SymbolTable.cpp')
-rw-r--r-- | llvm/lib/VMCore/SymbolTable.cpp | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/llvm/lib/VMCore/SymbolTable.cpp b/llvm/lib/VMCore/SymbolTable.cpp index 024d4b3a104..2c5db71dad0 100644 --- a/llvm/lib/VMCore/SymbolTable.cpp +++ b/llvm/lib/VMCore/SymbolTable.cpp @@ -166,23 +166,8 @@ Value *SymbolTable::removeEntry(plane_iterator Plane, value_iterator Entry) { return Result; } - -// remove - Remove a type -void SymbolTable::remove(const Type* Ty ) { - type_iterator TI = this->type_begin(); - type_iterator TE = this->type_end(); - - // Search for the entry - while ( TI != TE && TI->second != Ty ) - ++TI; - - if ( TI != TE ) - this->removeEntry( TI ); -} - - // removeEntry - Remove a type from the symbol table... -Type* SymbolTable::removeEntry(type_iterator Entry) { +Type* SymbolTable::remove(type_iterator Entry) { assert( Entry != tmap.end() && "Invalid entry to remove!"); const Type* Result = Entry->second; @@ -300,8 +285,7 @@ bool SymbolTable::strip() { } for (type_iterator TI = tmap.begin(); TI != tmap.end(); ) { - const Type* T = (TI++)->second; - remove(T); + remove(TI++); RemovedSymbol = true; } |