simplify and speed up recursive type processing.
authorChris Lattner <sabre@nondot.org>
Sat, 10 Feb 2007 04:57:36 +0000 (04:57 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 10 Feb 2007 04:57:36 +0000 (04:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34126 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Writer/SlotCalculator.cpp

index 3122f13cb7e9b3fb74a8ef0d403ea5fc091f26e1..00f7cbc5aeaeb6fd45bbc2c716f1bc8beedcaa16 100644 (file)
@@ -362,16 +362,14 @@ unsigned SlotCalculator::getOrCreateTypeSlot(const Type *Ty) {
   //    global { \2 * } { { \2 }* null }
   //
   unsigned ResultSlot = doInsertType(Ty);
-  SC_DEBUG("  Inserted type: " << Ty->getDescription() << " slot=" <<
-           ResultSlot << "\n");
 
   // Loop over any contained types in the definition... in post
   // order.
   for (po_iterator<const Type*> I = po_begin(Ty), E = po_end(Ty);
        I != E; ++I) {
-    if (*I != Ty) {
+    if (*I != Ty && !TypeMap.count(*I)) {
       // If we haven't seen this sub type before, add it to our type table!
-      getOrCreateTypeSlot(*I);
+      doInsertType(*I);
     }
   }
   return ResultSlot;