Skip to content

Commit a065295

Browse files
authored
[LLVM][TableGen] Change RegisterInfoEmitter to use const RecordKeeper (#109237)
Change RegisterInfoEmitter to use const RecordKeeper. This is a part of effort to have better const correctness in TableGen backends: https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
1 parent ccff6cc commit a065295

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

llvm/utils/TableGen/RegisterInfoEmitter.cpp

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ static cl::opt<bool>
5656
namespace {
5757

5858
class RegisterInfoEmitter {
59-
RecordKeeper &Records;
59+
const RecordKeeper &Records;
6060
const CodeGenTarget Target;
6161
CodeGenRegBank &RegBank;
6262

6363
public:
64-
RegisterInfoEmitter(RecordKeeper &R)
64+
RegisterInfoEmitter(const RecordKeeper &R)
6565
: Records(R), Target(R), RegBank(Target.getRegBank()) {
6666
RegBank.computeDerivedInfo();
6767
}
@@ -445,7 +445,7 @@ void RegisterInfoEmitter::EmitRegMappingTables(
445445
continue;
446446

447447
DefInit *DI = cast<DefInit>(V->getValue());
448-
Record *Alias = DI->getDef();
448+
const Record *Alias = DI->getDef();
449449
const auto &AliasIter = llvm::lower_bound(
450450
DwarfRegNums, Alias, [](const DwarfRegNumsMapPair &A, const Record *B) {
451451
return LessRecordRegister()(A.first, B);
@@ -1659,40 +1659,37 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
16591659
OS << "}\n\n";
16601660

16611661
// Emit CalleeSavedRegs information.
1662-
std::vector<Record *> CSRSets =
1662+
ArrayRef<const Record *> CSRSets =
16631663
Records.getAllDerivedDefinitions("CalleeSavedRegs");
1664-
for (unsigned i = 0, e = CSRSets.size(); i != e; ++i) {
1665-
Record *CSRSet = CSRSets[i];
1664+
for (const Record *CSRSet : CSRSets) {
16661665
const SetTheory::RecVec *Regs = RegBank.getSets().expand(CSRSet);
16671666
assert(Regs && "Cannot expand CalleeSavedRegs instance");
16681667

16691668
// Emit the *_SaveList list of callee-saved registers.
16701669
OS << "static const MCPhysReg " << CSRSet->getName() << "_SaveList[] = { ";
1671-
for (unsigned r = 0, re = Regs->size(); r != re; ++r)
1672-
OS << getQualifiedName((*Regs)[r]) << ", ";
1670+
for (const Record *Reg : *Regs)
1671+
OS << getQualifiedName(Reg) << ", ";
16731672
OS << "0 };\n";
16741673

16751674
// Emit the *_RegMask bit mask of call-preserved registers.
16761675
BitVector Covered = RegBank.computeCoveredRegisters(*Regs);
16771676

16781677
// Check for an optional OtherPreserved set.
16791678
// Add those registers to RegMask, but not to SaveList.
1680-
if (DagInit *OPDag =
1679+
if (const DagInit *OPDag =
16811680
dyn_cast<DagInit>(CSRSet->getValueInit("OtherPreserved"))) {
16821681
SetTheory::RecSet OPSet;
16831682
RegBank.getSets().evaluate(OPDag, OPSet, CSRSet->getLoc());
1684-
Covered |= RegBank.computeCoveredRegisters(
1685-
ArrayRef<const Record *>(OPSet.begin(), OPSet.end()));
1683+
Covered |= RegBank.computeCoveredRegisters(OPSet.getArrayRef());
16861684
}
16871685

16881686
// Add all constant physical registers to the preserved mask:
16891687
SetTheory::RecSet ConstantSet;
1690-
for (auto &Reg : RegBank.getRegisters()) {
1688+
for (const auto &Reg : RegBank.getRegisters()) {
16911689
if (Reg.Constant)
16921690
ConstantSet.insert(Reg.TheDef);
16931691
}
1694-
Covered |= RegBank.computeCoveredRegisters(
1695-
ArrayRef<const Record *>(ConstantSet.begin(), ConstantSet.end()));
1692+
Covered |= RegBank.computeCoveredRegisters(ConstantSet.getArrayRef());
16961693

16971694
OS << "static const uint32_t " << CSRSet->getName() << "_RegMask[] = { ";
16981695
printBitVectorAsHex(OS, Covered, 32);
@@ -1704,7 +1701,7 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
17041701
<< "::getRegMasks() const {\n";
17051702
if (!CSRSets.empty()) {
17061703
OS << " static const uint32_t *const Masks[] = {\n";
1707-
for (Record *CSRSet : CSRSets)
1704+
for (const Record *CSRSet : CSRSets)
17081705
OS << " " << CSRSet->getName() << "_RegMask,\n";
17091706
OS << " };\n";
17101707
OS << " return ArrayRef(Masks);\n";
@@ -1784,7 +1781,7 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
17841781
<< "::getRegMaskNames() const {\n";
17851782
if (!CSRSets.empty()) {
17861783
OS << " static const char *Names[] = {\n";
1787-
for (Record *CSRSet : CSRSets)
1784+
for (const Record *CSRSet : CSRSets)
17881785
OS << " " << '"' << CSRSet->getName() << '"' << ",\n";
17891786
OS << " };\n";
17901787
OS << " return ArrayRef(Names);\n";

0 commit comments

Comments
 (0)