[llvm] [RISCV] Reverse iteration/deletion structure in vsetvli coalescing [NFC] (PR #98936)
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 16 11:10:22 PDT 2024
================
@@ -1645,24 +1645,23 @@ void RISCVInsertVSETVLI::coalesceVSETVLIs(MachineBasicBlock &MBB) const {
Used.demandVTYPE();
SmallVector<MachineInstr*> ToDelete;
- // Update LIS and cleanup dead AVLs given a value which has
- // has had one use (as an AVL) removed.
- auto afterDroppedAVLUse = [&](Register OldVLReg) {
+ auto dropAVLUse = [&](MachineOperand &MO) {
+ if (!MO.isReg() || !MO.getReg().isVirtual())
+ return;
+ Register OldVLReg = MO.getReg();
+ MO.setReg(RISCV::NoRegister);
+
if (LIS)
LIS->shrinkToUses(&LIS->getInterval(OldVLReg));
MachineInstr *VLOpDef = MRI->getUniqueVRegDef(OldVLReg);
if (VLOpDef && TII->isAddImmediate(*VLOpDef, OldVLReg) &&
- MRI->use_nodbg_empty(OldVLReg)) {
- if (LIS) {
- LIS->removeInterval(OldVLReg);
- LIS->RemoveMachineInstrFromMaps(*VLOpDef);
- }
- VLOpDef->eraseFromParent();
- }
+ MRI->use_nodbg_empty(OldVLReg))
----------------
preames wrote:
I believe so. RegAllocBase.cpp does so, and if that wasn't valid, I imagine we'd have figured that out by now.
https://github.com/llvm/llvm-project/pull/98936
More information about the llvm-commits
mailing list