Fix value forwarding register forgetting memory reference

This commit is contained in:
drmortalwombat 2024-10-13 19:52:52 +02:00
parent 2d2c696aa4
commit ebc41560d9
2 changed files with 10 additions and 3 deletions

View File

@ -158,7 +158,10 @@ inline void sidfx_loop_ch(byte ch)
channels[ch].cnt--;
channels[ch].com = com;
channels[ch].priority = com->priority;
channels[ch].state = SIDFX_RESET_0;
if (com->time0)
channels[ch].state = SIDFX_RESET_0;
else
channels[ch].state = SIDFX_READY;
}
else
{

View File

@ -18684,6 +18684,7 @@ bool NativeCodeBasicBlock::SimplifyDiamond(NativeCodeProcedure* proc)
mFalseJump->mEntryRequiredRegs += mIns[sz].mAddress;
mFalseJump->mExitRequiredRegs += mIns[sz].mAddress;
}
mIns[sz].mLive |= LIVE_MEM;
mTrueJump->mTrueJump->mIns.Insert(0, NativeCodeInstruction(mIns[sz].mIns, ASMIT_LDY, mIns[sz]));
changed = true;
@ -18709,6 +18710,8 @@ bool NativeCodeBasicBlock::SimplifyDiamond(NativeCodeProcedure* proc)
mFalseJump->mEntryRequiredRegs += mIns[sz].mAddress;
mFalseJump->mExitRequiredRegs += mIns[sz].mAddress;
}
mIns[sz].mLive |= LIVE_MEM;
mTrueJump->mTrueJump->mIns.Insert(0, NativeCodeInstruction(mIns[sz].mIns, ASMIT_LDX, mIns[sz]));
changed = true;
}
@ -51489,7 +51492,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
mInterProc = proc;
mInterProc->mLinkerObject->mNativeProc = this;
CheckFunc = !strcmp(mInterProc->mIdent->mString, "fighter_status");
CheckFunc = !strcmp(mInterProc->mIdent->mString, "fighter_input");
int nblocks = proc->mBlocks.Size();
tblocks = new NativeCodeBasicBlock * [nblocks];
@ -52923,6 +52926,8 @@ void NativeCodeProcedure::Optimize(void)
if (mEntryBlock->JoinXYCascade())
changed = true;
}
#if 1
if (step == 9 && cnt < 10)
{
@ -53051,7 +53056,6 @@ void NativeCodeProcedure::Optimize(void)
changed = true;
}
if (step == 8)
{
ResetVisited();