Skip to content

Commit 0acdbd5

Browse files
authored
[InstrRef] Consistently use MLocTracker::getLocID() before calling lookupOrTrackRegister (llvm#167841)
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 c78fb8d commit 0acdbd5

File tree

2 files changed

+36
-31
lines changed

2 files changed

+36
-31
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
}

llvm/unittests/CodeGen/InstrRefLDVTest.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -955,7 +955,7 @@ TEST_F(InstrRefLDVTest, MLocSingleBlock) {
955955
// Add a new register to be tracked, and insert it into the transfer function
956956
// as a copy. The output of $rax should be the live-in value of $rsp.
957957
Register RAX = getRegByName("RAX");
958-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
958+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
959959
TransferFunc[0].insert({RspLoc, ValueIDNum(0, 1, RspLoc)});
960960
TransferFunc[0].insert({RaxLoc, ValueIDNum(0, 0, RspLoc)});
961961
initValueArray(MInLocs, 1, 2);
@@ -980,7 +980,7 @@ TEST_F(InstrRefLDVTest, MLocDiamondBlocks) {
980980
ASSERT_TRUE(MTracker->getNumLocs() == 1);
981981
LocIdx RspLoc(0);
982982
Register RAX = getRegByName("RAX");
983-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
983+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
984984

985985
auto [MInLocs, MOutLocs] = allocValueTables(4, 2);
986986

@@ -1194,7 +1194,7 @@ TEST_F(InstrRefLDVTest, MLocSimpleLoop) {
11941194
ASSERT_TRUE(MTracker->getNumLocs() == 1);
11951195
LocIdx RspLoc(0);
11961196
Register RAX = getRegByName("RAX");
1197-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1197+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
11981198

11991199
auto [MInLocs, MOutLocs] = allocValueTables(3, 2);
12001200

@@ -1292,7 +1292,7 @@ TEST_F(InstrRefLDVTest, MLocNestedLoop) {
12921292
ASSERT_TRUE(MTracker->getNumLocs() == 1);
12931293
LocIdx RspLoc(0);
12941294
Register RAX = getRegByName("RAX");
1295-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1295+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
12961296

12971297
auto [MInLocs, MOutLocs] = allocValueTables(5, 2);
12981298

@@ -1493,7 +1493,7 @@ TEST_F(InstrRefLDVTest, MLocNoDominatingLoop) {
14931493
ASSERT_TRUE(MTracker->getNumLocs() == 1);
14941494
LocIdx RspLoc(0);
14951495
Register RAX = getRegByName("RAX");
1496-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1496+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
14971497

14981498
auto [MInLocs, MOutLocs] = allocValueTables(5, 2);
14991499

@@ -1648,7 +1648,7 @@ TEST_F(InstrRefLDVTest, MLocBadlyNestedLoops) {
16481648
ASSERT_TRUE(MTracker->getNumLocs() == 1);
16491649
LocIdx RspLoc(0);
16501650
Register RAX = getRegByName("RAX");
1651-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1651+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
16521652

16531653
auto [MInLocs, MOutLocs] = allocValueTables(5, 2);
16541654

@@ -1780,7 +1780,7 @@ TEST_F(InstrRefLDVTest, pickVPHILocDiamond) {
17801780
ASSERT_TRUE(MTracker->getNumLocs() == 1);
17811781
LocIdx RspLoc(0);
17821782
Register RAX = getRegByName("RAX");
1783-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1783+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
17841784

17851785
auto [MInLocs, MOutLocs] = allocValueTables(4, 2);
17861786

@@ -1976,7 +1976,7 @@ TEST_F(InstrRefLDVTest, pickVPHILocLoops) {
19761976
ASSERT_TRUE(MTracker->getNumLocs() == 1);
19771977
LocIdx RspLoc(0);
19781978
Register RAX = getRegByName("RAX");
1979-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
1979+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
19801980

19811981
auto [MInLocs, MOutLocs] = allocValueTables(3, 2);
19821982

@@ -2104,9 +2104,9 @@ TEST_F(InstrRefLDVTest, pickVPHILocBadlyNestedLoops) {
21042104
ASSERT_TRUE(MTracker->getNumLocs() == 1);
21052105
LocIdx RspLoc(0);
21062106
Register RAX = getRegByName("RAX");
2107-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
2107+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
21082108
Register RBX = getRegByName("RBX");
2109-
LocIdx RbxLoc = MTracker->lookupOrTrackRegister(RBX);
2109+
LocIdx RbxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RBX));
21102110

21112111
auto [MInLocs, MOutLocs] = allocValueTables(5, 3);
21122112

@@ -2256,7 +2256,7 @@ TEST_F(InstrRefLDVTest, vlocJoinDiamond) {
22562256
ASSERT_TRUE(MTracker->getNumLocs() == 1);
22572257
LocIdx RspLoc(0);
22582258
Register RAX = getRegByName("RAX");
2259-
MTracker->lookupOrTrackRegister(RAX);
2259+
MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
22602260

22612261
DbgOpID LiveInRspID = DbgOpID(false, 0);
22622262
DbgOpID LiveInRaxID = DbgOpID(false, 1);
@@ -2440,7 +2440,7 @@ TEST_F(InstrRefLDVTest, vlocJoinLoops) {
24402440
ASSERT_TRUE(MTracker->getNumLocs() == 1);
24412441
LocIdx RspLoc(0);
24422442
Register RAX = getRegByName("RAX");
2443-
MTracker->lookupOrTrackRegister(RAX);
2443+
MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
24442444

24452445
DbgOpID LiveInRspID = DbgOpID(false, 0);
24462446
DbgOpID LiveInRaxID = DbgOpID(false, 1);
@@ -2538,9 +2538,9 @@ TEST_F(InstrRefLDVTest, vlocJoinBadlyNestedLoops) {
25382538
ASSERT_TRUE(MTracker->getNumLocs() == 1);
25392539
LocIdx RspLoc(0);
25402540
Register RAX = getRegByName("RAX");
2541-
MTracker->lookupOrTrackRegister(RAX);
2541+
MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
25422542
Register RBX = getRegByName("RBX");
2543-
MTracker->lookupOrTrackRegister(RBX);
2543+
MTracker->lookupOrTrackRegister(MTracker->getLocID(RBX));
25442544

25452545
DbgOpID LiveInRspID = DbgOpID(false, 0);
25462546
DbgOpID LiveInRaxID = DbgOpID(false, 1);
@@ -2678,7 +2678,7 @@ TEST_F(InstrRefLDVTest, VLocDiamondBlocks) {
26782678
ASSERT_TRUE(MTracker->getNumLocs() == 1);
26792679
LocIdx RspLoc(0);
26802680
Register RAX = getRegByName("RAX");
2681-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
2681+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
26822682

26832683
unsigned EntryBlk = 0, RetBlk = 3;
26842684

@@ -2896,7 +2896,7 @@ TEST_F(InstrRefLDVTest, VLocSimpleLoop) {
28962896
ASSERT_TRUE(MTracker->getNumLocs() == 1);
28972897
LocIdx RspLoc(0);
28982898
Register RAX = getRegByName("RAX");
2899-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
2899+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
29002900

29012901
unsigned EntryBlk = 0, LoopBlk = 1;
29022902

@@ -3175,7 +3175,7 @@ TEST_F(InstrRefLDVTest, VLocNestedLoop) {
31753175
ASSERT_TRUE(MTracker->getNumLocs() == 1);
31763176
LocIdx RspLoc(0);
31773177
Register RAX = getRegByName("RAX");
3178-
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(RAX);
3178+
LocIdx RaxLoc = MTracker->lookupOrTrackRegister(MTracker->getLocID(RAX));
31793179

31803180
unsigned EntryBlk = 0, Loop1Blk = 1, Loop2Blk = 2;
31813181

0 commit comments

Comments
 (0)