@@ -56,12 +56,12 @@ static cl::opt<bool>
56
56
namespace {
57
57
58
58
class RegisterInfoEmitter {
59
- RecordKeeper &Records;
59
+ const RecordKeeper &Records;
60
60
const CodeGenTarget Target;
61
61
CodeGenRegBank &RegBank;
62
62
63
63
public:
64
- RegisterInfoEmitter (RecordKeeper &R)
64
+ RegisterInfoEmitter (const RecordKeeper &R)
65
65
: Records(R), Target(R), RegBank(Target.getRegBank()) {
66
66
RegBank.computeDerivedInfo ();
67
67
}
@@ -445,7 +445,7 @@ void RegisterInfoEmitter::EmitRegMappingTables(
445
445
continue ;
446
446
447
447
DefInit *DI = cast<DefInit>(V->getValue ());
448
- Record *Alias = DI->getDef ();
448
+ const Record *Alias = DI->getDef ();
449
449
const auto &AliasIter = llvm::lower_bound (
450
450
DwarfRegNums, Alias, [](const DwarfRegNumsMapPair &A, const Record *B) {
451
451
return LessRecordRegister ()(A.first , B);
@@ -1659,40 +1659,37 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1659
1659
OS << " }\n\n " ;
1660
1660
1661
1661
// Emit CalleeSavedRegs information.
1662
- std::vector< Record *> CSRSets =
1662
+ ArrayRef< const Record *> CSRSets =
1663
1663
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) {
1666
1665
const SetTheory::RecVec *Regs = RegBank.getSets ().expand (CSRSet);
1667
1666
assert (Regs && " Cannot expand CalleeSavedRegs instance" );
1668
1667
1669
1668
// Emit the *_SaveList list of callee-saved registers.
1670
1669
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 ) << " , " ;
1673
1672
OS << " 0 };\n " ;
1674
1673
1675
1674
// Emit the *_RegMask bit mask of call-preserved registers.
1676
1675
BitVector Covered = RegBank.computeCoveredRegisters (*Regs);
1677
1676
1678
1677
// Check for an optional OtherPreserved set.
1679
1678
// Add those registers to RegMask, but not to SaveList.
1680
- if (DagInit *OPDag =
1679
+ if (const DagInit *OPDag =
1681
1680
dyn_cast<DagInit>(CSRSet->getValueInit (" OtherPreserved" ))) {
1682
1681
SetTheory::RecSet OPSet;
1683
1682
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 ());
1686
1684
}
1687
1685
1688
1686
// Add all constant physical registers to the preserved mask:
1689
1687
SetTheory::RecSet ConstantSet;
1690
- for (auto &Reg : RegBank.getRegisters ()) {
1688
+ for (const auto &Reg : RegBank.getRegisters ()) {
1691
1689
if (Reg.Constant )
1692
1690
ConstantSet.insert (Reg.TheDef );
1693
1691
}
1694
- Covered |= RegBank.computeCoveredRegisters (
1695
- ArrayRef<const Record *>(ConstantSet.begin (), ConstantSet.end ()));
1692
+ Covered |= RegBank.computeCoveredRegisters (ConstantSet.getArrayRef ());
1696
1693
1697
1694
OS << " static const uint32_t " << CSRSet->getName () << " _RegMask[] = { " ;
1698
1695
printBitVectorAsHex (OS, Covered, 32 );
@@ -1704,7 +1701,7 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1704
1701
<< " ::getRegMasks() const {\n " ;
1705
1702
if (!CSRSets.empty ()) {
1706
1703
OS << " static const uint32_t *const Masks[] = {\n " ;
1707
- for (Record *CSRSet : CSRSets)
1704
+ for (const Record *CSRSet : CSRSets)
1708
1705
OS << " " << CSRSet->getName () << " _RegMask,\n " ;
1709
1706
OS << " };\n " ;
1710
1707
OS << " return ArrayRef(Masks);\n " ;
@@ -1784,7 +1781,7 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1784
1781
<< " ::getRegMaskNames() const {\n " ;
1785
1782
if (!CSRSets.empty ()) {
1786
1783
OS << " static const char *Names[] = {\n " ;
1787
- for (Record *CSRSet : CSRSets)
1784
+ for (const Record *CSRSet : CSRSets)
1788
1785
OS << " " << ' "' << CSRSet->getName () << ' "' << " ,\n " ;
1789
1786
OS << " };\n " ;
1790
1787
OS << " return ArrayRef(Names);\n " ;
0 commit comments