1. constants can never occur in the symbol table.
authorChris Lattner <sabre@nondot.org>
Fri, 9 Feb 2007 07:51:47 +0000 (07:51 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 9 Feb 2007 07:51:47 +0000 (07:51 +0000)
2. All function-level constants are now incorporated into the module-level
  constant pool, since the compaction table was removed.  Eliminate extra
  work to check for them.

This speeds up the bcwriter from 24.4s to 13.1s on 447.dealII and .73 -> .56s
on kc++ in a release build.

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

lib/Bytecode/Writer/SlotCalculator.cpp
lib/Bytecode/Writer/SlotCalculator.h
lib/Bytecode/Writer/Writer.cpp

index 197f20601a663a5e453f87833f7ed04230384f2e..478216d145d8abb8900873a377cb61b17fc217cb 100644 (file)
@@ -171,7 +171,6 @@ void SlotCalculator::processModule() {
       }
       getOrCreateSlot(I->getType());
     }
-    processSymbolTableConstants(&F->getValueSymbolTable());
   }
 
   // Insert constants that are named at module level into the slot pool so that
@@ -233,15 +232,6 @@ void SlotCalculator::processValueSymbolTable(const ValueSymbolTable *VST) {
     getOrCreateSlot(VI->second);
 }
 
-void SlotCalculator::processSymbolTableConstants(const ValueSymbolTable *VST) {
-  // Now do the constant values in all planes
-  for (ValueSymbolTable::const_iterator VI = VST->begin(), VE = VST->end(); 
-       VI != VE; ++VI)
-    if (isa<Constant>(VI->second) && !isa<GlobalValue>(VI->second))
-      getOrCreateSlot(VI->second);
-}
-
-
 void SlotCalculator::incorporateFunction(const Function *F) {
   assert((ModuleLevel.empty() ||
           ModuleTypeLevel == 0) && "Module already incorporated!");
@@ -270,14 +260,6 @@ void SlotCalculator::incorporateFunction(const Function *F) {
     for (constant_iterator CI = constant_begin(F), CE = constant_end(F);
          CI != CE; ++CI)
       getOrCreateSlot(*CI);
-
-    // If there is a symbol table, it is possible that the user has names for
-    // constants that are not being used.  In this case, we will have problems
-    // if we don't emit the constants now, because otherwise we will get
-    // symbol table references to constants not in the output.  Scan for these
-    // constants now.
-    //
-    processSymbolTableConstants(&F->getValueSymbolTable());
   }
 
   SC_DEBUG("Inserting Instructions:\n");
index 6cddb30f99ae5eaddd3664cb2a78759ea0f9b994..353a97a1d1aa314c55d4fff066239ce9f56690a3 100644 (file)
@@ -132,7 +132,6 @@ private:
   //
   void processTypeSymbolTable(const TypeSymbolTable *ST);
   void processValueSymbolTable(const ValueSymbolTable *ST);
-  void processSymbolTableConstants(const ValueSymbolTable *ST);
 
   // insertPrimitives - helper for constructors to insert primitive types.
   void insertPrimitives();
index a2e8fe566d35633bfe55c7751ccb04126c0841bf..a7d4b005ab7456c97847455bee7e39d69a59040d 100644 (file)
@@ -1112,8 +1112,6 @@ void BytecodeWriter::outputFunction(const Function *F) {
   // Get slot information about the function...
   Table.incorporateFunction(F);
 
-  outputConstants(true);
-
   // Output all of the instructions in the body of the function
   outputInstructions(F);