mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-22 10:16:43 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20481 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1327c5ab99
commit
c27aa8ddb2
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user