Eliminate a bunch of work from ValueSymbolTable::insert for the common case
authorChris Lattner <sabre@nondot.org>
Wed, 7 Feb 2007 05:22:49 +0000 (05:22 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 7 Feb 2007 05:22:49 +0000 (05:22 +0000)
where a symbol name doesn't conflict.  This speeds up bc reading 16% on 176.gcc!

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

lib/VMCore/ValueSymbolTable.cpp

index 51197b6bf3cef56ddbb17c763a03fa20527bc279..6bd5b0c49c4f429561242cfce102e213c81bed98 100644 (file)
@@ -81,7 +81,13 @@ void ValueSymbolTable::insert(Value* V) {
   assert(V && "Can't insert null Value into symbol table!");
   assert(V->hasName() && "Can't insert nameless Value into symbol table");
 
-  // Check to see if there is a naming conflict.  If so, rename this value
+  // Try inserting the name, assuming it won't conflict.
+  if (vmap.insert(make_pair(V->Name, V)).second) {
+    DOUT << " Inserted value: " << V->Name << ": " << *V << "\n";
+    return;
+  }
+  
+  // Otherwise, there is a naming conflict.  Rename this value.
   std::string UniqueName = getUniqueName(V->getName());
 
   DEBUG(DOUT << " Inserting value: " << UniqueName << ": " << *V << "\n");