Delete the really inefficient method: void remove(const Type* Typ);
authorChris Lattner <sabre@nondot.org>
Sun, 6 Mar 2005 05:46:41 +0000 (05:46 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 6 Mar 2005 05:46:41 +0000 (05:46 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20481 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/SymbolTable.cpp

index 024d4b3a104c638c86117be5d009078959904d70..2c5db71dad0aea6fb0b59818b453ed35f99221be 100644 (file)
@@ -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;
   }