@@ -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