diff options
author | Jay Foad <jay.foad@amd.com> | 2021-09-24 18:43:17 +0100 |
---|---|---|
committer | Jay Foad <jay.foad@amd.com> | 2021-09-24 19:14:57 +0100 |
commit | ac51ad24a75c02152f8ece943d65de9a1c4e947a (patch) | |
tree | c06fdd69f726dc6712152094a3e93b9cae51dd4e /llvm/lib/CodeGen/TwoAddressInstructionPass.cpp | |
parent | ff0b62dd8898e58df297f76285a7e613d745db3e (diff) | |
download | llvm-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.cpp | 5 |
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(); } |