Fix overeager lda/sta join of tail blocks

This commit is contained in:
drmortalwombat 2023-12-12 22:39:22 +01:00
parent 6bbf325720
commit 6cf8466dfd

View File

@ -20537,7 +20537,7 @@ bool NativeCodeBasicBlock::CanForwardLoadStore(const NativeCodeInstruction& lins
} }
if (mIns[i].mType == ASMIT_JSR) if (mIns[i].mType == ASMIT_JSR)
return false; return false;
if (sins.MayBeChangedOnAddress(mIns[i])) if (sins.MayBeChangedOnAddress(mIns[i]) || mIns[i].MayBeChangedOnAddress(sins))
return false; return false;
i--; i--;
} }
@ -44528,7 +44528,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
{ {
mInterProc = proc; mInterProc = proc;
CheckFunc = !strcmp(mInterProc->mIdent->mString, "main"); CheckFunc = !strcmp(mInterProc->mIdent->mString, "Enemy::StepTurn");
int nblocks = proc->mBlocks.Size(); int nblocks = proc->mBlocks.Size();
tblocks = new NativeCodeBasicBlock * [nblocks]; tblocks = new NativeCodeBasicBlock * [nblocks];
@ -45490,6 +45490,7 @@ void NativeCodeProcedure::Optimize(void)
#endif #endif
#if _DEBUG #if _DEBUG
ResetVisited(); ResetVisited();
mEntryBlock->CheckBlocks(true); mEntryBlock->CheckBlocks(true);