Fix loss of memory live status when reversing compare
This commit is contained in:
parent
490180f9dc
commit
2ee5cc7bf4
|
@ -14838,7 +14838,7 @@ bool NativeCodeBasicBlock::RemoveJumpToBranch(void)
|
||||||
if (mTrueJump && mTrueJump->RemoveJumpToBranch()) changed = true;
|
if (mTrueJump && mTrueJump->RemoveJumpToBranch()) changed = true;
|
||||||
if (mFalseJump && mFalseJump->RemoveJumpToBranch()) changed = true;
|
if (mFalseJump && mFalseJump->RemoveJumpToBranch()) changed = true;
|
||||||
|
|
||||||
if (mTrueJump && !mFalseJump && mTrueJump != this && mTrueJump->mIns.Size() == 0)
|
if (mTrueJump && !mFalseJump && mTrueJump != this && mTrueJump->mIns.Size() == 0 && (mTrueJump->mFalseJump || mTrueJump->mTrueJump != mTrueJump))
|
||||||
{
|
{
|
||||||
mTrueJump->mEntryBlocks.RemoveAll(this);
|
mTrueJump->mEntryBlocks.RemoveAll(this);
|
||||||
mTrueJump->mNumEntries--;
|
mTrueJump->mNumEntries--;
|
||||||
|
@ -45138,6 +45138,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizerIterate2(int i, int pass)
|
||||||
mIns[i + 0].mLive |= LIVE_CPU_REG_X;
|
mIns[i + 0].mLive |= LIVE_CPU_REG_X;
|
||||||
if (mIns[i + 1].RequiresYReg())
|
if (mIns[i + 1].RequiresYReg())
|
||||||
mIns[i + 0].mLive |= LIVE_CPU_REG_Y;
|
mIns[i + 0].mLive |= LIVE_CPU_REG_Y;
|
||||||
|
mIns[i + 0].mLive |= mIns[i + 1].mLive & LIVE_MEM;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (
|
else if (
|
||||||
|
@ -53267,7 +53268,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
|
||||||
|
|
||||||
mInterProc->mLinkerObject->mNativeProc = this;
|
mInterProc->mLinkerObject->mNativeProc = this;
|
||||||
|
|
||||||
CheckFunc = !strcmp(mIdent->mString, "doScroll");
|
CheckFunc = !strcmp(mIdent->mString, "main");
|
||||||
|
|
||||||
int nblocks = proc->mBlocks.Size();
|
int nblocks = proc->mBlocks.Size();
|
||||||
tblocks = new NativeCodeBasicBlock * [nblocks];
|
tblocks = new NativeCodeBasicBlock * [nblocks];
|
||||||
|
|
Loading…
Reference in New Issue