Skip to content

Commit 7557b83

Browse files
committed
[BOLT] Use range-based implicit def/use accessors. NFCI
1 parent d7043e8 commit 7557b83

File tree

3 files changed

+21
-34
lines changed

3 files changed

+21
-34
lines changed

bolt/include/bolt/Passes/LivenessAnalysis.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,8 @@ class LivenessAnalysis : public DataflowAnalysis<LivenessAnalysis, BitVector,
142142
Used |= BC.MIB->getAliases(Point.getOperand(I).getReg(),
143143
/*OnlySmaller=*/false);
144144
}
145-
for (auto I = InstInfo.getImplicitUses(),
146-
E = InstInfo.getImplicitUses() + InstInfo.getNumImplicitUses();
147-
I != E; ++I)
148-
Used |= BC.MIB->getAliases(*I, false);
145+
for (MCPhysReg ImplicitUse : InstInfo.implicit_uses())
146+
Used |= BC.MIB->getAliases(ImplicitUse, false);
149147
if (IsCall &&
150148
(!BC.MIB->isTailCall(Point) || !BC.MIB->isConditionalBranch(Point))) {
151149
// Never gen FLAGS from a non-conditional call... this is overly

bolt/lib/Core/MCPlusBuilder.cpp

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,8 @@ void MCPlusBuilder::getClobberedRegs(const MCInst &Inst,
328328

329329
const MCInstrDesc &InstInfo = Info->get(Inst.getOpcode());
330330

331-
const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs();
332-
for (unsigned I = 0, E = InstInfo.getNumImplicitDefs(); I != E; ++I)
333-
Regs |= getAliases(ImplicitDefs[I], /*OnlySmaller=*/false);
331+
for (MCPhysReg ImplicitDef : InstInfo.implicit_defs())
332+
Regs |= getAliases(ImplicitDef, /*OnlySmaller=*/false);
334333

335334
for (unsigned I = 0, E = InstInfo.getNumDefs(); I != E; ++I) {
336335
const MCOperand &Operand = Inst.getOperand(I);
@@ -345,12 +344,10 @@ void MCPlusBuilder::getTouchedRegs(const MCInst &Inst, BitVector &Regs) const {
345344

346345
const MCInstrDesc &InstInfo = Info->get(Inst.getOpcode());
347346

348-
const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs();
349-
for (unsigned I = 0, E = InstInfo.getNumImplicitDefs(); I != E; ++I)
350-
Regs |= getAliases(ImplicitDefs[I], /*OnlySmaller=*/false);
351-
const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses();
352-
for (unsigned I = 0, E = InstInfo.getNumImplicitUses(); I != E; ++I)
353-
Regs |= getAliases(ImplicitUses[I], /*OnlySmaller=*/false);
347+
for (MCPhysReg ImplicitDef : InstInfo.implicit_defs())
348+
Regs |= getAliases(ImplicitDef, /*OnlySmaller=*/false);
349+
for (MCPhysReg ImplicitUse : InstInfo.implicit_uses())
350+
Regs |= getAliases(ImplicitUse, /*OnlySmaller=*/false);
354351

355352
for (unsigned I = 0, E = Inst.getNumOperands(); I != E; ++I) {
356353
if (!Inst.getOperand(I).isReg())
@@ -365,9 +362,8 @@ void MCPlusBuilder::getWrittenRegs(const MCInst &Inst, BitVector &Regs) const {
365362

366363
const MCInstrDesc &InstInfo = Info->get(Inst.getOpcode());
367364

368-
const MCPhysReg *ImplicitDefs = InstInfo.getImplicitDefs();
369-
for (unsigned I = 0, E = InstInfo.getNumImplicitDefs(); I != E; ++I)
370-
Regs |= getAliases(ImplicitDefs[I], /*OnlySmaller=*/true);
365+
for (MCPhysReg ImplicitDef : InstInfo.implicit_defs())
366+
Regs |= getAliases(ImplicitDef, /*OnlySmaller=*/true);
371367

372368
for (unsigned I = 0, E = InstInfo.getNumDefs(); I != E; ++I) {
373369
const MCOperand &Operand = Inst.getOperand(I);
@@ -382,9 +378,8 @@ void MCPlusBuilder::getUsedRegs(const MCInst &Inst, BitVector &Regs) const {
382378

383379
const MCInstrDesc &InstInfo = Info->get(Inst.getOpcode());
384380

385-
const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses();
386-
for (unsigned I = 0, E = InstInfo.getNumImplicitUses(); I != E; ++I)
387-
Regs |= getAliases(ImplicitUses[I], /*OnlySmaller=*/true);
381+
for (MCPhysReg ImplicitUse : InstInfo.implicit_uses())
382+
Regs |= getAliases(ImplicitUse, /*OnlySmaller=*/true);
388383

389384
for (unsigned I = 0, E = Inst.getNumOperands(); I != E; ++I) {
390385
if (!Inst.getOperand(I).isReg())
@@ -415,9 +410,8 @@ void MCPlusBuilder::getSrcRegs(const MCInst &Inst, BitVector &Regs) const {
415410

416411
const MCInstrDesc &InstInfo = Info->get(Inst.getOpcode());
417412

418-
const MCPhysReg *ImplicitUses = InstInfo.getImplicitUses();
419-
for (unsigned I = 0, E = InstInfo.getNumImplicitUses(); I != E; ++I)
420-
Regs |= getAliases(ImplicitUses[I], /*OnlySmaller=*/true);
413+
for (MCPhysReg ImplicitUse : InstInfo.implicit_uses())
414+
Regs |= getAliases(ImplicitUse, /*OnlySmaller=*/true);
421415

422416
for (unsigned I = InstInfo.getNumDefs(), E = InstInfo.getNumOperands();
423417
I != E; ++I) {
@@ -438,10 +432,9 @@ bool MCPlusBuilder::hasUseOfPhysReg(const MCInst &MI, unsigned Reg) const {
438432
if (MI.getOperand(I).isReg() &&
439433
RegInfo->isSubRegisterEq(Reg, MI.getOperand(I).getReg()))
440434
return true;
441-
if (const uint16_t *ImpUses = InstInfo.ImplicitUses) {
442-
for (; *ImpUses; ++ImpUses)
443-
if (*ImpUses == Reg || RegInfo->isSubRegister(Reg, *ImpUses))
444-
return true;
435+
for (MCPhysReg ImplicitUse : InstInfo.implicit_uses()) {
436+
if (ImplicitUse == Reg || RegInfo->isSubRegister(Reg, ImplicitUse))
437+
return true;
445438
}
446439
return false;
447440
}

bolt/lib/Passes/RegReAssign.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,23 +146,19 @@ void RegReAssign::rankRegisters(BinaryFunction &Function) {
146146
const MCInstrDesc &Desc = BC.MII->get(Inst.getOpcode());
147147

148148
// Disallow substituitions involving regs in implicit uses lists
149-
const MCPhysReg *ImplicitUses = Desc.getImplicitUses();
150-
while (ImplicitUses && *ImplicitUses) {
149+
for (MCPhysReg ImplicitUse : Desc.implicit_uses()) {
151150
const size_t RegEC =
152-
BC.MIB->getAliases(*ImplicitUses, false).find_first();
151+
BC.MIB->getAliases(ImplicitUse, false).find_first();
153152
RegScore[RegEC] =
154153
std::numeric_limits<decltype(RegScore)::value_type>::min();
155-
++ImplicitUses;
156154
}
157155

158156
// Disallow substituitions involving regs in implicit defs lists
159-
const MCPhysReg *ImplicitDefs = Desc.getImplicitDefs();
160-
while (ImplicitDefs && *ImplicitDefs) {
157+
for (MCPhysReg ImplicitDef : Desc.implicit_defs()) {
161158
const size_t RegEC =
162-
BC.MIB->getAliases(*ImplicitDefs, false).find_first();
159+
BC.MIB->getAliases(ImplicitDef, false).find_first();
163160
RegScore[RegEC] =
164161
std::numeric_limits<decltype(RegScore)::value_type>::min();
165-
++ImplicitDefs;
166162
}
167163

168164
for (int I = 0, E = MCPlus::getNumPrimeOperands(Inst); I != E; ++I) {

0 commit comments

Comments
 (0)