Skip to content

Commit 10b12e6

Browse files
authored
LiveVariables: Use Register (llvm#120204)
1 parent 0693b9e commit 10b12e6

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

llvm/include/llvm/CodeGen/LiveVariables.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ class LiveVariables {
156156

157157
void HandlePhysRegUse(Register Reg, MachineInstr &MI);
158158
void HandlePhysRegDef(Register Reg, MachineInstr *MI,
159-
SmallVectorImpl<unsigned> &Defs);
160-
void UpdatePhysRegDefs(MachineInstr &MI, SmallVectorImpl<unsigned> &Defs);
159+
SmallVectorImpl<Register> &Defs);
160+
void UpdatePhysRegDefs(MachineInstr &MI, SmallVectorImpl<Register> &Defs);
161161

162162
/// FindLastRefOrPartRef - Return the last reference or partial reference of
163163
/// the specified register.
@@ -167,15 +167,15 @@ class LiveVariables {
167167
/// register. Also returns the sub-registers that're defined by the
168168
/// instruction.
169169
MachineInstr *FindLastPartialDef(Register Reg,
170-
SmallSet<unsigned, 4> &PartDefRegs);
170+
SmallSet<Register, 4> &PartDefRegs);
171171

172172
/// analyzePHINodes - Gather information about the PHI nodes in here. In
173173
/// particular, we want to map the variable information of a virtual
174174
/// register which is used in a PHI node. We map that to the BB the vreg
175175
/// is coming from.
176176
void analyzePHINodes(const MachineFunction& Fn);
177177

178-
void runOnInstr(MachineInstr &MI, SmallVectorImpl<unsigned> &Defs,
178+
void runOnInstr(MachineInstr &MI, SmallVectorImpl<Register> &Defs,
179179
unsigned NumRegs);
180180

181181
void runOnBlock(MachineBasicBlock *MBB, unsigned NumRegs);

llvm/lib/CodeGen/LiveVariables.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ void LiveVariables::HandleVirtRegDef(Register Reg, MachineInstr &MI) {
217217
/// Also returns the sub-registers that're defined by the instruction.
218218
MachineInstr *
219219
LiveVariables::FindLastPartialDef(Register Reg,
220-
SmallSet<unsigned, 4> &PartDefRegs) {
221-
unsigned LastDefReg = 0;
220+
SmallSet<Register, 4> &PartDefRegs) {
221+
Register LastDefReg = 0;
222222
unsigned LastDefDist = 0;
223223
MachineInstr *LastDef = nullptr;
224224
for (MCPhysReg SubReg : TRI->subregs(Reg)) {
@@ -264,14 +264,14 @@ void LiveVariables::HandlePhysRegUse(Register Reg, MachineInstr &MI) {
264264
// ...
265265
// = EAX
266266
// All of the sub-registers must have been defined before the use of Reg!
267-
SmallSet<unsigned, 4> PartDefRegs;
267+
SmallSet<Register, 4> PartDefRegs;
268268
MachineInstr *LastPartialDef = FindLastPartialDef(Reg, PartDefRegs);
269269
// If LastPartialDef is NULL, it must be using a livein register.
270270
if (LastPartialDef) {
271271
LastPartialDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/,
272272
true/*IsImp*/));
273273
PhysRegDef[Reg] = LastPartialDef;
274-
SmallSet<unsigned, 8> Processed;
274+
SmallSet<MCPhysReg, 8> Processed;
275275
for (MCPhysReg SubReg : TRI->subregs(Reg)) {
276276
if (Processed.count(SubReg))
277277
continue;
@@ -460,7 +460,7 @@ void LiveVariables::HandleRegMask(const MachineOperand &MO, unsigned NumRegs) {
460460
}
461461

462462
void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI,
463-
SmallVectorImpl<unsigned> &Defs) {
463+
SmallVectorImpl<Register> &Defs) {
464464
// What parts of the register are previously defined?
465465
SmallSet<unsigned, 32> Live;
466466
if (PhysRegDef[Reg] || PhysRegUse[Reg]) {
@@ -499,7 +499,7 @@ void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI,
499499
}
500500

501501
void LiveVariables::UpdatePhysRegDefs(MachineInstr &MI,
502-
SmallVectorImpl<unsigned> &Defs) {
502+
SmallVectorImpl<Register> &Defs) {
503503
while (!Defs.empty()) {
504504
Register Reg = Defs.pop_back_val();
505505
for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) {
@@ -510,7 +510,7 @@ void LiveVariables::UpdatePhysRegDefs(MachineInstr &MI,
510510
}
511511

512512
void LiveVariables::runOnInstr(MachineInstr &MI,
513-
SmallVectorImpl<unsigned> &Defs,
513+
SmallVectorImpl<Register> &Defs,
514514
unsigned NumRegs) {
515515
assert(!MI.isDebugOrPseudoInstr());
516516
// Process all of the operands of the instruction...
@@ -522,16 +522,16 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
522522
NumOperandsToProcess = 1;
523523

524524
// Clear kill and dead markers. LV will recompute them.
525-
SmallVector<unsigned, 4> UseRegs;
526-
SmallVector<unsigned, 4> DefRegs;
525+
SmallVector<Register, 4> UseRegs;
526+
SmallVector<Register, 4> DefRegs;
527527
SmallVector<unsigned, 1> RegMasks;
528528
for (unsigned i = 0; i != NumOperandsToProcess; ++i) {
529529
MachineOperand &MO = MI.getOperand(i);
530530
if (MO.isRegMask()) {
531531
RegMasks.push_back(i);
532532
continue;
533533
}
534-
if (!MO.isReg() || MO.getReg() == 0)
534+
if (!MO.isReg() || !MO.getReg())
535535
continue;
536536
Register MOReg = MO.getReg();
537537
if (MO.isUse()) {
@@ -551,8 +551,8 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
551551

552552
MachineBasicBlock *MBB = MI.getParent();
553553
// Process all uses.
554-
for (unsigned MOReg : UseRegs) {
555-
if (Register::isVirtualRegister(MOReg))
554+
for (Register MOReg : UseRegs) {
555+
if (MOReg.isVirtual())
556556
HandleVirtRegUse(MOReg, MBB, MI);
557557
else if (!MRI->isReserved(MOReg))
558558
HandlePhysRegUse(MOReg, MI);
@@ -563,8 +563,8 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
563563
HandleRegMask(MI.getOperand(Mask), NumRegs);
564564

565565
// Process all defs.
566-
for (unsigned MOReg : DefRegs) {
567-
if (Register::isVirtualRegister(MOReg))
566+
for (Register MOReg : DefRegs) {
567+
if (MOReg.isVirtual())
568568
HandleVirtRegDef(MOReg, MI);
569569
else if (!MRI->isReserved(MOReg))
570570
HandlePhysRegDef(MOReg, &MI, Defs);
@@ -574,7 +574,7 @@ void LiveVariables::runOnInstr(MachineInstr &MI,
574574

575575
void LiveVariables::runOnBlock(MachineBasicBlock *MBB, unsigned NumRegs) {
576576
// Mark live-in registers as live-in.
577-
SmallVector<unsigned, 4> Defs;
577+
SmallVector<Register, 4> Defs;
578578
for (const auto &LI : MBB->liveins()) {
579579
assert(Register::isPhysicalRegister(LI.PhysReg) &&
580580
"Cannot have a live-in virtual register!");

0 commit comments

Comments
 (0)