aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2021-09-24 18:43:17 +0100
committerJay Foad <jay.foad@amd.com>2021-09-24 19:14:57 +0100
commitac51ad24a75c02152f8ece943d65de9a1c4e947a (patch)
treec06fdd69f726dc6712152094a3e93b9cae51dd4e /llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
parentff0b62dd8898e58df297f76285a7e613d745db3e (diff)
downloadllvm-ac51ad24a75c02152f8ece943d65de9a1c4e947a.zip
llvm-ac51ad24a75c02152f8ece943d65de9a1c4e947a.tar.gz
llvm-ac51ad24a75c02152f8ece943d65de9a1c4e947a.tar.bz2
[LiveIntervals] Fix asan debug build failures
Call RemoveMachineInstrFromMaps before erasing instrs. repairIntervalsInRange will do this for you after erasing the instruction, but it's not safe to rely on it because assertions in SlotIndexes::removeMachineInstrFromMaps refer to fields in the erased instruction. This fixes asan buildbot failures caused by D110328.
Diffstat (limited to 'llvm/lib/CodeGen/TwoAddressInstructionPass.cpp')
-rw-r--r--llvm/lib/CodeGen/TwoAddressInstructionPass.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
index 200f986..3e2e6c9 100644
--- a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
+++ b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
@@ -1283,6 +1283,8 @@ tryInstructionTransform(MachineBasicBlock::iterator &mi,
if (MO.isReg())
OrigRegs.push_back(MO.getReg());
}
+
+ LIS->RemoveMachineInstrFromMaps(MI);
}
MI.eraseFromParent();
@@ -1717,6 +1719,9 @@ eliminateRegSequence(MachineBasicBlock::iterator &MBBI) {
for (int j = MI.getNumOperands() - 1, ee = 0; j > ee; --j)
MI.RemoveOperand(j);
} else {
+ if (LIS)
+ LIS->RemoveMachineInstrFromMaps(MI);
+
LLVM_DEBUG(dbgs() << "Eliminated: " << MI);
MI.eraseFromParent();
}