mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-31 11:32:42 +00:00
fix a few old bugs (found by inspection) where we would zap instructions
without informing memdep. This could cause nondeterminstic weirdness based on where instructions happen to get allocated, and will hopefully breath some life into some broken testers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123124 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2cfa5b4934
commit
f42685004c
@ -385,7 +385,8 @@ Instruction *MemCpyOpt::tryMergingIntoMemset(Instruction *StartInst,
|
||||
|
||||
// Check to see if this store is to a constant offset from the start ptr.
|
||||
int64_t Offset;
|
||||
if (!IsPointerOffset(StartPtr, NextStore->getPointerOperand(), Offset, *TD))
|
||||
if (!IsPointerOffset(StartPtr, NextStore->getPointerOperand(),
|
||||
Offset, *TD))
|
||||
break;
|
||||
|
||||
Ranges.addStore(Offset, NextStore);
|
||||
@ -490,6 +491,7 @@ bool MemCpyOpt::processStore(StoreInst *SI, BasicBlock::iterator &BBI) {
|
||||
if (changed) {
|
||||
MD->removeInstruction(SI);
|
||||
SI->eraseFromParent();
|
||||
MD->removeInstruction(LI);
|
||||
LI->eraseFromParent();
|
||||
++NumMemCpyInstr;
|
||||
return true;
|
||||
@ -786,6 +788,7 @@ bool MemCpyOpt::processMemCpy(MemCpyInst *M) {
|
||||
if (CallInst *C = dyn_cast<CallInst>(DepInfo.getInst())) {
|
||||
if (performCallSlotOptzn(M, M->getDest(), M->getSource(),
|
||||
CopySize->getZExtValue(), C)) {
|
||||
MD->removeInstruction(M);
|
||||
M->eraseFromParent();
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user