From ac51ad24a75c02152f8ece943d65de9a1c4e947a Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Fri, 24 Sep 2021 18:43:17 +0100 Subject: [PATCH] [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. --- llvm/lib/CodeGen/TwoAddressInstructionPass.cpp | 5 +++++ 1 file changed, 5 insertions(+) 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(); } -- 2.7.4