Simplify ownership of RegClasses by using list<CodeGenRegisterClass> instead of vector<CodeGenRegisterClass*>

This complicates a few algorithms due to not having random access, but
not by a huge degree I don't think (open to debate/design
discussion/etc).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223261 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie
2014-12-03 19:58:45 +00:00
parent 89036eb44c
commit 7a16f34aa6
6 changed files with 100 additions and 110 deletions

View File

@@ -233,8 +233,8 @@ getRegisterVTs(Record *R) const {
const CodeGenRegister *Reg = getRegBank().getReg(R);
std::vector<MVT::SimpleValueType> Result;
for (const auto &RC : getRegBank().getRegClasses()) {
if (RC->contains(Reg)) {
ArrayRef<MVT::SimpleValueType> InVTs = RC->getValueTypes();
if (RC.contains(Reg)) {
ArrayRef<MVT::SimpleValueType> InVTs = RC.getValueTypes();
Result.insert(Result.end(), InVTs.begin(), InVTs.end());
}
}
@@ -247,9 +247,8 @@ getRegisterVTs(Record *R) const {
void CodeGenTarget::ReadLegalValueTypes() const {
for (const auto *RC : getRegBank().getRegClasses())
for (unsigned ri = 0, re = RC->VTs.size(); ri != re; ++ri)
LegalValueTypes.push_back(RC->VTs[ri]);
for (const auto &RC : getRegBank().getRegClasses())
LegalValueTypes.insert(LegalValueTypes.end(), RC.VTs.begin(), RC.VTs.end());
// Remove duplicates.
std::sort(LegalValueTypes.begin(), LegalValueTypes.end());