Skip to content

Commit b2a29d9

Browse files
author
git apple-llvm automerger
committed
Merge commit '0acdbd5d81c0' from llvm.org/main into next
2 parents 26e003f + 0acdbd5 commit b2a29d9

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
@@ -1653,8 +1653,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef(
16531653
unsigned MainRegSize = TRI->getRegSizeInBits(*TRC);
16541654
if (Size != MainRegSize || Offset) {
16551655
// Enumerate all subregisters, searching.
1656-
Register NewReg = 0;
1657-
for (MCPhysReg SR : TRI->subregs(Reg)) {
1656+
Register NewReg = Register();
1657+
for (MCRegister SR : TRI->subregs(Reg)) {
16581658
unsigned Subreg = TRI->getSubRegIndex(Reg, SR);
16591659
unsigned SubregSize = TRI->getSubRegIdxSize(Subreg);
16601660
unsigned SubregOffset = TRI->getSubRegIdxOffset(Subreg);
@@ -1670,7 +1670,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef(
16701670
} else {
16711671
// Re-state the value as being defined within the subregister
16721672
// that we found.
1673-
LocIdx NewLoc = MTracker->lookupOrTrackRegister(NewReg);
1673+
LocIdx NewLoc =
1674+
MTracker->lookupOrTrackRegister(MTracker->getLocID(NewReg));
16741675
NewID = ValueIDNum(NewID->getBlock(), NewID->getInst(), NewLoc);
16751676
}
16761677
}
@@ -1868,12 +1869,13 @@ bool InstrRefBasedLDV::transferDebugPHI(MachineInstr &MI) {
18681869
Register Reg = MO.getReg();
18691870
ValueIDNum Num = MTracker->readReg(Reg);
18701871
auto PHIRec = DebugPHIRecord(
1871-
{InstrNum, MI.getParent(), Num, MTracker->lookupOrTrackRegister(Reg)});
1872+
{InstrNum, MI.getParent(), Num,
1873+
MTracker->lookupOrTrackRegister(MTracker->getLocID(Reg))});
18721874
DebugPHINumToValue.push_back(PHIRec);
18731875

18741876
// Ensure this register is tracked.
18751877
for (MCRegAliasIterator RAI(MO.getReg(), TRI, true); RAI.isValid(); ++RAI)
1876-
MTracker->lookupOrTrackRegister(*RAI);
1878+
MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI));
18771879
} else if (MO.isFI()) {
18781880
// The value is whatever's in this stack slot.
18791881
unsigned FI = MO.getIndex();
@@ -1999,8 +2001,8 @@ void InstrRefBasedLDV::transferRegisterDef(MachineInstr &MI) {
19992001
// different location.
20002002

20012003
// Inform TTracker about any direct clobbers.
2002-
for (uint32_t DeadReg : DeadRegs) {
2003-
LocIdx Loc = MTracker->lookupOrTrackRegister(DeadReg);
2004+
for (MCRegister DeadReg : DeadRegs) {
2005+
LocIdx Loc = MTracker->lookupOrTrackRegister(MTracker->getLocID(DeadReg));
20042006
TTracker->clobberMloc(Loc, MI.getIterator(), false);
20052007
}
20062008

@@ -2045,9 +2047,9 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) {
20452047

20462048
// Copy subregisters from one location to another.
20472049
for (MCSubRegIndexIterator SRI(SrcRegNum, TRI); SRI.isValid(); ++SRI) {
2048-
unsigned SrcSubReg = SRI.getSubReg();
2050+
MCRegister SrcSubReg = SRI.getSubReg();
20492051
unsigned SubRegIdx = SRI.getSubRegIndex();
2050-
unsigned DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx);
2052+
MCRegister DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx);
20512053
if (!DstSubReg)
20522054
continue;
20532055

@@ -2056,8 +2058,10 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) {
20562058
// yet.
20572059
// This will force SrcSubReg to be tracked, if it isn't yet. Will read
20582060
// mphi values if it wasn't tracked.
2059-
LocIdx SrcL = MTracker->lookupOrTrackRegister(SrcSubReg);
2060-
LocIdx DstL = MTracker->lookupOrTrackRegister(DstSubReg);
2061+
LocIdx SrcL =
2062+
MTracker->lookupOrTrackRegister(MTracker->getLocID(SrcSubReg));
2063+
LocIdx DstL =
2064+
MTracker->lookupOrTrackRegister(MTracker->getLocID(DstSubReg));
20612065
(void)SrcL;
20622066
(void)DstL;
20632067
ValueIDNum CpyValue = MTracker->readReg(SrcSubReg);
@@ -2180,7 +2184,7 @@ bool InstrRefBasedLDV::transferSpillOrRestoreInst(MachineInstr &MI) {
21802184
// Then, transfer subreg bits.
21812185
for (MCPhysReg SR : TRI->subregs(Reg)) {
21822186
// Ensure this reg is tracked,
2183-
(void)MTracker->lookupOrTrackRegister(SR);
2187+
(void)MTracker->lookupOrTrackRegister(MTracker->getLocID(SR));
21842188
unsigned SubregIdx = TRI->getSubRegIndex(Reg, SR);
21852189
unsigned SpillID = MTracker->getLocID(Loc, SubregIdx);
21862190
DoTransfer(SR, SpillID);
@@ -2712,7 +2716,7 @@ void InstrRefBasedLDV::placeMLocPHIs(
27122716

27132717
// For reg units, place PHIs, and then place them for any aliasing registers.
27142718
for (Register R : RegUnitsToPHIUp) {
2715-
LocIdx L = MTracker->lookupOrTrackRegister(R);
2719+
LocIdx L = MTracker->lookupOrTrackRegister(MTracker->getLocID(R));
27162720
CollectPHIsForLoc(L);
27172721

27182722
// Install those PHI values into the live-in value array.
@@ -2725,7 +2729,8 @@ void InstrRefBasedLDV::placeMLocPHIs(
27252729
if (!MTracker->isRegisterTracked(*RAI))
27262730
continue;
27272731

2728-
LocIdx AliasLoc = MTracker->lookupOrTrackRegister(*RAI);
2732+
LocIdx AliasLoc =
2733+
MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI));
27292734
InstallPHIsAtLoc(AliasLoc);
27302735
}
27312736
}

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)