forked from OSchip/llvm-project
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. llvm-svn: 163629
This commit is contained in:
parent
21e2f1c6e5
commit
dd40fda52d
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Reference in New Issue