Two changes:
authorChris Lattner <sabre@nondot.org>
Sun, 21 Oct 2001 23:02:41 +0000 (23:02 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 21 Oct 2001 23:02:41 +0000 (23:02 +0000)
1. Delete type handle regardless of whether a collision occured
2. Remove a MAJOR pessimization of runtime performance (thought be be an optimization at the time).

This second one was causing a 105k llvm file (from gcc) to parse in 58 seconds... without the
'optimization' it now parses in 3.64 seconds.  I suck.

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

lib/AsmParser/llvmAsmParser.y

index 28562ac0b1e9ea653059882a6b2655691a950032..e49ffa3a3df335669fdc5260fe0d013b6a1b6108 100644 (file)
@@ -463,21 +463,6 @@ static void ResolveTypes(vector<PATypeHolder<Type> > &LateResolveTypes) {
 }
 
 
-// ResolveSomeTypes - This goes through the forward referenced type table and
-// completes references that are now done.  This is so that types are
-// immediately resolved to be as concrete as possible.  This does not cause
-// thrown exceptions if not everything is resolved.
-//
-static void ResolveSomeTypes(vector<PATypeHolder<Type> > &LateResolveTypes) {
-  for (unsigned i = 0; i < LateResolveTypes.size(); ) {
-    if (ResolveType(LateResolveTypes[i]))
-      ++i;                                                // Type didn't resolve
-    else
-      LateResolveTypes.erase(LateResolveTypes.begin()+i); // Type resolved!
-  }
-}
-
-
 // setValueName - Set the specified value to the name given.  The name may be
 // null potentially, in which case this is a noop.  The string passed in is
 // assumed to be a malloc'd string buffer, and is freed by this function.
@@ -1041,11 +1026,9 @@ ConstPool : ConstPool OptAssign CONST ConstVal {
         InsertType($4->get(),
                    inMethodScope() ? CurMeth.Types : CurModule.Types);
       }
-      delete $4;
-
-      ResolveSomeTypes(inMethodScope() ? CurMeth.LateResolveTypes :
-                       CurModule.LateResolveTypes);
     }
+
+    delete $4;
   }
   | ConstPool MethodProto {            // Method prototypes can be in const pool
   }