Fix a regression that I introduced yesterday. :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10756 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-01-11 23:29:26 +00:00
parent b08bdc4a16
commit 9380297bc0
2 changed files with 32 additions and 16 deletions

View File

@ -132,24 +132,32 @@ void SlotCalculator::processModule() {
// all non-value types are pushed to the end of the type table, giving nice
// low numbers to the types that can be used by instructions, thus reducing
// the amount of explodage we suffer.
if (!IgnoreNamedNodes && Table[Type::TypeTyID].size() >= 64) {
if (!IgnoreNamedNodes && Table[Type::TypeTyID].size() >= 0/*64*/) {
// Scan through the type table moving value types to the start of the table.
TypePlane &Types = Table[Type::TypeTyID];
TypePlane *Types = &Table[Type::TypeTyID];
unsigned FirstNonValueTypeID = 0;
for (unsigned i = 0, e = Types.size(); i != e; ++i)
if (cast<Type>(Types[i])->isFirstClassType() ||
cast<Type>(Types[i])->isPrimitiveType()) {
for (unsigned i = 0, e = Types->size(); i != e; ++i)
if (cast<Type>((*Types)[i])->isFirstClassType() ||
cast<Type>((*Types)[i])->isPrimitiveType()) {
// Check to see if we have to shuffle this type around. If not, don't
// do anything.
if (i != FirstNonValueTypeID) {
assert(i != Type::TypeTyID && FirstNonValueTypeID != Type::TypeTyID &&
"Cannot move around the type plane!");
// Swap the type ID's.
std::swap(Types[i], Types[FirstNonValueTypeID]);
std::swap((*Types)[i], (*Types)[FirstNonValueTypeID]);
// Keep the NodeMap up to date.
std::swap(NodeMap[Types[i]], NodeMap[Types[FirstNonValueTypeID]]);
NodeMap[(*Types)[i]] = i;
NodeMap[(*Types)[FirstNonValueTypeID]] = FirstNonValueTypeID;
// When we move a type, make sure to move its value plane as needed.
if (Table.size() > FirstNonValueTypeID) {
if (Table.size() <= i) Table.resize(i+1);
std::swap(Table[i], Table[FirstNonValueTypeID]);
Types = &Table[Type::TypeTyID];
}
}
++FirstNonValueTypeID;
}

View File

@ -132,24 +132,32 @@ void SlotCalculator::processModule() {
// all non-value types are pushed to the end of the type table, giving nice
// low numbers to the types that can be used by instructions, thus reducing
// the amount of explodage we suffer.
if (!IgnoreNamedNodes && Table[Type::TypeTyID].size() >= 64) {
if (!IgnoreNamedNodes && Table[Type::TypeTyID].size() >= 0/*64*/) {
// Scan through the type table moving value types to the start of the table.
TypePlane &Types = Table[Type::TypeTyID];
TypePlane *Types = &Table[Type::TypeTyID];
unsigned FirstNonValueTypeID = 0;
for (unsigned i = 0, e = Types.size(); i != e; ++i)
if (cast<Type>(Types[i])->isFirstClassType() ||
cast<Type>(Types[i])->isPrimitiveType()) {
for (unsigned i = 0, e = Types->size(); i != e; ++i)
if (cast<Type>((*Types)[i])->isFirstClassType() ||
cast<Type>((*Types)[i])->isPrimitiveType()) {
// Check to see if we have to shuffle this type around. If not, don't
// do anything.
if (i != FirstNonValueTypeID) {
assert(i != Type::TypeTyID && FirstNonValueTypeID != Type::TypeTyID &&
"Cannot move around the type plane!");
// Swap the type ID's.
std::swap(Types[i], Types[FirstNonValueTypeID]);
std::swap((*Types)[i], (*Types)[FirstNonValueTypeID]);
// Keep the NodeMap up to date.
std::swap(NodeMap[Types[i]], NodeMap[Types[FirstNonValueTypeID]]);
NodeMap[(*Types)[i]] = i;
NodeMap[(*Types)[FirstNonValueTypeID]] = FirstNonValueTypeID;
// When we move a type, make sure to move its value plane as needed.
if (Table.size() > FirstNonValueTypeID) {
if (Table.size() <= i) Table.resize(i+1);
std::swap(Table[i], Table[FirstNonValueTypeID]);
Types = &Table[Type::TypeTyID];
}
}
++FirstNonValueTypeID;
}