Clean the sub-reg index composition maps at emission.

Preserve the Composites map in the CodeGenSubRegIndex class so it can be
used to determine which sub-register indices can actually be composed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163629 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2012-09-11 16:34:05 +00:00
parent 59f45e4610
commit de0250728b
3 changed files with 2 additions and 20 deletions

View File

@ -75,16 +75,6 @@ void CodeGenSubRegIndex::updateComponents(CodeGenRegBank &RegBank) {
}
}
void CodeGenSubRegIndex::cleanComposites() {
// Clean out redundant mappings of the form this+X -> X.
for (CompMap::iterator i = Composed.begin(), e = Composed.end(); i != e;) {
CompMap::iterator j = i;
++i;
if (j->first == j->second)
Composed.erase(j);
}
}
//===----------------------------------------------------------------------===//
// CodeGenRegister
//===----------------------------------------------------------------------===//
@ -1164,11 +1154,6 @@ void CodeGenRegBank::computeComposites() {
}
}
}
// We don't care about the difference between (Idx1, Idx2) -> Idx2 and invalid
// compositions, so remove any mappings of that form.
for (unsigned i = 0, e = SubRegIndices.size(); i != e; ++i)
SubRegIndices[i]->cleanComposites();
}
namespace {

View File

@ -80,9 +80,6 @@ namespace llvm {
// Update the composite maps of components specified in 'ComposedOf'.
void updateComponents(CodeGenRegBank&);
// Clean out redundant composite mappings.
void cleanComposites();
// Return the map of composites.
const CompMap &getComposites() const { return Composed; }

View File

@ -1055,8 +1055,8 @@ RegisterInfoEmitter::runTargetDesc(raw_ostream &OS, CodeGenTarget &Target,
for (unsigned i = 0, e = SubRegIndices.size(); i != e; ++i) {
bool Open = false;
for (unsigned j = 0; j != e; ++j) {
if (CodeGenSubRegIndex *Comp =
SubRegIndices[i]->compose(SubRegIndices[j])) {
CodeGenSubRegIndex *Comp = SubRegIndices[i]->compose(SubRegIndices[j]);
if (Comp && Comp != SubRegIndices[j]) {
if (!Open) {
OS << " case " << SubRegIndices[i]->getQualifiedName()
<< ": switch(IdxB) {\n default: return IdxB;\n";