Skip to content

Commit 194aa6d

Browse files
committed
[InstrRef] Consistently use MLocTracker::getLocID() before calling lookupOrTrackRegister.
The LocID for registers is just the register ID. The getLocID function is supposed to hide this detail, but it wasn't being used consistently. This avoids a bunch of implicit casts from Register or MCRegister to unsigned.
1 parent 13251f5 commit 194aa6d

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,8 +1603,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef(
16031603
unsigned MainRegSize = TRI->getRegSizeInBits(*TRC);
16041604
if (Size != MainRegSize || Offset) {
16051605
// Enumerate all subregisters, searching.
1606-
Register NewReg = 0;
1607-
for (MCPhysReg SR : TRI->subregs(Reg)) {
1606+
Register NewReg = Register();
1607+
for (MCRegister SR : TRI->subregs(Reg)) {
16081608
unsigned Subreg = TRI->getSubRegIndex(Reg, SR);
16091609
unsigned SubregSize = TRI->getSubRegIdxSize(Subreg);
16101610
unsigned SubregOffset = TRI->getSubRegIdxOffset(Subreg);
@@ -1620,7 +1620,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef(
16201620
} else {
16211621
// Re-state the value as being defined within the subregister
16221622
// that we found.
1623-
LocIdx NewLoc = MTracker->lookupOrTrackRegister(NewReg);
1623+
LocIdx NewLoc =
1624+
MTracker->lookupOrTrackRegister(MTracker->getLocID(NewReg));
16241625
NewID = ValueIDNum(NewID->getBlock(), NewID->getInst(), NewLoc);
16251626
}
16261627
}
@@ -1818,12 +1819,13 @@ bool InstrRefBasedLDV::transferDebugPHI(MachineInstr &MI) {
18181819
Register Reg = MO.getReg();
18191820
ValueIDNum Num = MTracker->readReg(Reg);
18201821
auto PHIRec = DebugPHIRecord(
1821-
{InstrNum, MI.getParent(), Num, MTracker->lookupOrTrackRegister(Reg)});
1822+
{InstrNum, MI.getParent(), Num,
1823+
MTracker->lookupOrTrackRegister(MTracker->getLocID(Reg))});
18221824
DebugPHINumToValue.push_back(PHIRec);
18231825

18241826
// Ensure this register is tracked.
18251827
for (MCRegAliasIterator RAI(MO.getReg(), TRI, true); RAI.isValid(); ++RAI)
1826-
MTracker->lookupOrTrackRegister(*RAI);
1828+
MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI));
18271829
} else if (MO.isFI()) {
18281830
// The value is whatever's in this stack slot.
18291831
unsigned FI = MO.getIndex();
@@ -1949,8 +1951,8 @@ void InstrRefBasedLDV::transferRegisterDef(MachineInstr &MI) {
19491951
// different location.
19501952

19511953
// Inform TTracker about any direct clobbers.
1952-
for (uint32_t DeadReg : DeadRegs) {
1953-
LocIdx Loc = MTracker->lookupOrTrackRegister(DeadReg);
1954+
for (MCRegister DeadReg : DeadRegs) {
1955+
LocIdx Loc = MTracker->lookupOrTrackRegister(MTracker->getLocID(DeadReg));
19541956
TTracker->clobberMloc(Loc, MI.getIterator(), false);
19551957
}
19561958

@@ -1995,9 +1997,9 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) {
19951997

19961998
// Copy subregisters from one location to another.
19971999
for (MCSubRegIndexIterator SRI(SrcRegNum, TRI); SRI.isValid(); ++SRI) {
1998-
unsigned SrcSubReg = SRI.getSubReg();
2000+
MCRegister SrcSubReg = SRI.getSubReg();
19992001
unsigned SubRegIdx = SRI.getSubRegIndex();
2000-
unsigned DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx);
2002+
MCRegister DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx);
20012003
if (!DstSubReg)
20022004
continue;
20032005

@@ -2006,8 +2008,10 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) {
20062008
// yet.
20072009
// This will force SrcSubReg to be tracked, if it isn't yet. Will read
20082010
// mphi values if it wasn't tracked.
2009-
LocIdx SrcL = MTracker->lookupOrTrackRegister(SrcSubReg);
2010-
LocIdx DstL = MTracker->lookupOrTrackRegister(DstSubReg);
2011+
LocIdx SrcL =
2012+
MTracker->lookupOrTrackRegister(MTracker->getLocID(SrcSubReg));
2013+
LocIdx DstL =
2014+
MTracker->lookupOrTrackRegister(MTracker->getLocID(DstSubReg));
20112015
(void)SrcL;
20122016
(void)DstL;
20132017
ValueIDNum CpyValue = MTracker->readReg(SrcSubReg);
@@ -2130,7 +2134,7 @@ bool InstrRefBasedLDV::transferSpillOrRestoreInst(MachineInstr &MI) {
21302134
// Then, transfer subreg bits.
21312135
for (MCPhysReg SR : TRI->subregs(Reg)) {
21322136
// Ensure this reg is tracked,
2133-
(void)MTracker->lookupOrTrackRegister(SR);
2137+
(void)MTracker->lookupOrTrackRegister(MTracker->getLocID(SR));
21342138
unsigned SubregIdx = TRI->getSubRegIndex(Reg, SR);
21352139
unsigned SpillID = MTracker->getLocID(Loc, SubregIdx);
21362140
DoTransfer(SR, SpillID);
@@ -2662,7 +2666,7 @@ void InstrRefBasedLDV::placeMLocPHIs(
26622666

26632667
// For reg units, place PHIs, and then place them for any aliasing registers.
26642668
for (Register R : RegUnitsToPHIUp) {
2665-
LocIdx L = MTracker->lookupOrTrackRegister(R);
2669+
LocIdx L = MTracker->lookupOrTrackRegister(MTracker->getLocID(R));
26662670
CollectPHIsForLoc(L);
26672671

26682672
// Install those PHI values into the live-in value array.
@@ -2675,7 +2679,8 @@ void InstrRefBasedLDV::placeMLocPHIs(
26752679
if (!MTracker->isRegisterTracked(*RAI))
26762680
continue;
26772681

2678-
LocIdx AliasLoc = MTracker->lookupOrTrackRegister(*RAI);
2682+
LocIdx AliasLoc =
2683+
MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI));
26792684
InstallPHIsAtLoc(AliasLoc);
26802685
}
26812686
}

0 commit comments

Comments
 (0)