From d597219aeaf7def6784b2ee5858c5413bc1fac4f Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:36:18 +0200 Subject: [PATCH] Fix loss of memory live status when shortcuting zp shift add --- oscar64/NativeCodeGenerator.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index 5c625af..422e910 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -36859,7 +36859,7 @@ bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc return OptimizeSimpleLoopInvariant(proc, full); for (int i = 0; i < sz; i++) - mIns[i].mLive = LIVE_CPU_REG_Y; + mIns[i].mLive |= LIVE_CPU_REG_Y; mIns[sz - 3].mType = ASMIT_INY; mIns[sz - 2].mType = ASMIT_TYA; @@ -46504,6 +46504,11 @@ bool NativeCodeBasicBlock::PeepHoleOptimizerIterate4(int i, int pass) mIns[i + 3].mLinkerObject = mIns[i + 0].mLinkerObject; mIns[i + 3].mFlags = mIns[i + 0].mFlags; + if (mIns[i + 3].mMode == ASMIM_INDIRECT_Y) + { + mIns[i + 0].mLive |= LIVE_MEM; + mIns[i + 3].mLive |= LIVE_MEM; + } if (mIns[i + 3].RequiresYReg()) { mIns[i + 0].mLive |= LIVE_CPU_REG_Y; @@ -51547,7 +51552,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc) mInterProc = proc; mInterProc->mLinkerObject->mNativeProc = this; - CheckFunc = !strcmp(mInterProc->mIdent->mString, "vspr_update"); + CheckFunc = !strcmp(mInterProc->mIdent->mString, "walker_draw_right"); int nblocks = proc->mBlocks.Size(); tblocks = new NativeCodeBasicBlock * [nblocks];