Previous change "Turn s_and_saveexec_b64 into s_and_b64 if
result is unused" introduced asan use-after-poison error.
Instruction was analyzed after eraseFromParent() calls.
Move analysys higher than erase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309779
91177308-0d34-0410-b5e6-
96231b3b80d8
DEBUG(dbgs() << "Redundant EXEC = S_OR_B64 found: " << *Lead << '\n');
+ auto SaveExec = getOrExecSource(*Lead, *TII, MRI);
unsigned SaveExecReg = getOrNonExecReg(*Lead, *TII);
LIS->RemoveMachineInstrFromMaps(*Lead);
Lead->eraseFromParent();
// If the only use of saved exec in the removed instruction is S_AND_B64
// fold the copy now.
- auto SaveExec = getOrExecSource(*Lead, *TII, MRI);
if (!SaveExec || !SaveExec->isFullCopy())
continue;