mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 00:11:00 +00:00
[CodeGenPrepare] Report all changes made during instruction sinking
r234638 chained another transform below which was tripping over the deleted instruction. Use after free found by asan in many regression tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234654 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1a6fd4d9f9
commit
306699f8ca
@ -693,11 +693,11 @@ static bool SinkCast(CastInst *CI) {
|
||||
InsertedCast =
|
||||
CastInst::Create(CI->getOpcode(), CI->getOperand(0), CI->getType(), "",
|
||||
InsertPt);
|
||||
MadeChange = true;
|
||||
}
|
||||
|
||||
// Replace a use of the cast with a use of the new cast.
|
||||
TheUse = InsertedCast;
|
||||
MadeChange = true;
|
||||
++NumCastUses;
|
||||
}
|
||||
|
||||
@ -834,17 +834,19 @@ static bool SinkCmpExpression(CmpInst *CI) {
|
||||
CmpInst::Create(CI->getOpcode(),
|
||||
CI->getPredicate(), CI->getOperand(0),
|
||||
CI->getOperand(1), "", InsertPt);
|
||||
MadeChange = true;
|
||||
}
|
||||
|
||||
// Replace a use of the cmp with a use of the new cmp.
|
||||
TheUse = InsertedCmp;
|
||||
MadeChange = true;
|
||||
++NumCmpUses;
|
||||
}
|
||||
|
||||
// If we removed all uses, nuke the cmp.
|
||||
if (CI->use_empty())
|
||||
if (CI->use_empty()) {
|
||||
CI->eraseFromParent();
|
||||
MadeChange = true;
|
||||
}
|
||||
|
||||
return MadeChange;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user