diff options
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp index 0037bdd..6dda0fd 100644 --- a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp +++ b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp @@ -1603,8 +1603,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef( unsigned MainRegSize = TRI->getRegSizeInBits(*TRC); if (Size != MainRegSize || Offset) { // Enumerate all subregisters, searching. - Register NewReg = 0; - for (MCPhysReg SR : TRI->subregs(Reg)) { + Register NewReg = Register(); + for (MCRegister SR : TRI->subregs(Reg)) { unsigned Subreg = TRI->getSubRegIndex(Reg, SR); unsigned SubregSize = TRI->getSubRegIdxSize(Subreg); unsigned SubregOffset = TRI->getSubRegIdxOffset(Subreg); @@ -1620,7 +1620,8 @@ std::optional<ValueIDNum> InstrRefBasedLDV::getValueForInstrRef( } else { // Re-state the value as being defined within the subregister // that we found. - LocIdx NewLoc = MTracker->lookupOrTrackRegister(NewReg); + LocIdx NewLoc = + MTracker->lookupOrTrackRegister(MTracker->getLocID(NewReg)); NewID = ValueIDNum(NewID->getBlock(), NewID->getInst(), NewLoc); } } @@ -1818,12 +1819,13 @@ bool InstrRefBasedLDV::transferDebugPHI(MachineInstr &MI) { Register Reg = MO.getReg(); ValueIDNum Num = MTracker->readReg(Reg); auto PHIRec = DebugPHIRecord( - {InstrNum, MI.getParent(), Num, MTracker->lookupOrTrackRegister(Reg)}); + {InstrNum, MI.getParent(), Num, + MTracker->lookupOrTrackRegister(MTracker->getLocID(Reg))}); DebugPHINumToValue.push_back(PHIRec); // Ensure this register is tracked. for (MCRegAliasIterator RAI(MO.getReg(), TRI, true); RAI.isValid(); ++RAI) - MTracker->lookupOrTrackRegister(*RAI); + MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI)); } else if (MO.isFI()) { // The value is whatever's in this stack slot. unsigned FI = MO.getIndex(); @@ -1949,8 +1951,8 @@ void InstrRefBasedLDV::transferRegisterDef(MachineInstr &MI) { // different location. // Inform TTracker about any direct clobbers. - for (uint32_t DeadReg : DeadRegs) { - LocIdx Loc = MTracker->lookupOrTrackRegister(DeadReg); + for (MCRegister DeadReg : DeadRegs) { + LocIdx Loc = MTracker->lookupOrTrackRegister(MTracker->getLocID(DeadReg)); TTracker->clobberMloc(Loc, MI.getIterator(), false); } @@ -1995,9 +1997,9 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) { // Copy subregisters from one location to another. for (MCSubRegIndexIterator SRI(SrcRegNum, TRI); SRI.isValid(); ++SRI) { - unsigned SrcSubReg = SRI.getSubReg(); + MCRegister SrcSubReg = SRI.getSubReg(); unsigned SubRegIdx = SRI.getSubRegIndex(); - unsigned DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx); + MCRegister DstSubReg = TRI->getSubReg(DstRegNum, SubRegIdx); if (!DstSubReg) continue; @@ -2006,8 +2008,10 @@ void InstrRefBasedLDV::performCopy(Register SrcRegNum, Register DstRegNum) { // yet. // This will force SrcSubReg to be tracked, if it isn't yet. Will read // mphi values if it wasn't tracked. - LocIdx SrcL = MTracker->lookupOrTrackRegister(SrcSubReg); - LocIdx DstL = MTracker->lookupOrTrackRegister(DstSubReg); + LocIdx SrcL = + MTracker->lookupOrTrackRegister(MTracker->getLocID(SrcSubReg)); + LocIdx DstL = + MTracker->lookupOrTrackRegister(MTracker->getLocID(DstSubReg)); (void)SrcL; (void)DstL; ValueIDNum CpyValue = MTracker->readReg(SrcSubReg); @@ -2130,7 +2134,7 @@ bool InstrRefBasedLDV::transferSpillOrRestoreInst(MachineInstr &MI) { // Then, transfer subreg bits. for (MCPhysReg SR : TRI->subregs(Reg)) { // Ensure this reg is tracked, - (void)MTracker->lookupOrTrackRegister(SR); + (void)MTracker->lookupOrTrackRegister(MTracker->getLocID(SR)); unsigned SubregIdx = TRI->getSubRegIndex(Reg, SR); unsigned SpillID = MTracker->getLocID(Loc, SubregIdx); DoTransfer(SR, SpillID); @@ -2662,7 +2666,7 @@ void InstrRefBasedLDV::placeMLocPHIs( // For reg units, place PHIs, and then place them for any aliasing registers. for (Register R : RegUnitsToPHIUp) { - LocIdx L = MTracker->lookupOrTrackRegister(R); + LocIdx L = MTracker->lookupOrTrackRegister(MTracker->getLocID(R)); CollectPHIsForLoc(L); // Install those PHI values into the live-in value array. @@ -2675,7 +2679,8 @@ void InstrRefBasedLDV::placeMLocPHIs( if (!MTracker->isRegisterTracked(*RAI)) continue; - LocIdx AliasLoc = MTracker->lookupOrTrackRegister(*RAI); + LocIdx AliasLoc = + MTracker->lookupOrTrackRegister(MTracker->getLocID(*RAI)); InstallPHIsAtLoc(AliasLoc); } } |
