mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
1. constants can never occur in the symbol table.
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. llvm-svn: 34084
This commit is contained in:
parent
20d0f4e319
commit
5796c232a4
@ -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");
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user