Fix loss of memory live status when reversing compare

This commit is contained in:
drmortalwombat 2025-03-07 17:23:50 +01:00
parent 490180f9dc
commit 2ee5cc7bf4

View File

@ -14838,7 +14838,7 @@ bool NativeCodeBasicBlock::RemoveJumpToBranch(void)
if (mTrueJump && mTrueJump->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->mNumEntries--;
@ -45138,6 +45138,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizerIterate2(int i, int pass)
mIns[i + 0].mLive |= LIVE_CPU_REG_X;
if (mIns[i + 1].RequiresYReg())
mIns[i + 0].mLive |= LIVE_CPU_REG_Y;
mIns[i + 0].mLive |= mIns[i + 1].mLive & LIVE_MEM;
return true;
}
else if (
@ -53267,7 +53268,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
mInterProc->mLinkerObject->mNativeProc = this;
CheckFunc = !strcmp(mIdent->mString, "doScroll");
CheckFunc = !strcmp(mIdent->mString, "main");
int nblocks = proc->mBlocks.Size();
tblocks = new NativeCodeBasicBlock * [nblocks];