From: Jay Foad Date: Fri, 24 Sep 2021 17:43:17 +0000 (+0100) Subject: [LiveIntervals] Fix asan debug build failures X-Git-Tag: upstream/15.0.7~30573 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac51ad24a75c02152f8ece943d65de9a1c4e947a;p=platform%2Fupstream%2Fllvm.git [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. --- 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(); }