From 51c38a47237c526556b50f6bf9675559f30158f8 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:14:18 +0100 Subject: [PATCH] Fix short lea coalescing with negative offsets --- oscar64/InterCode.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index c80477a..fa3ec5e 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -19220,8 +19220,10 @@ bool InterCodeBasicBlock::ShortLeaMerge(int& spareTemps) if (found) { - mInstructions.Insert(0, iins[0]->Clone()); - iins[0]->mSrc[1].mIntConst = minint; + InterInstruction* lins = iins[0]->Clone(); + lins->mSrc[0].mRange.Reset(); + lins->mSrc[1].mIntConst = minint; + mInstructions.Insert(0, lins); if (iins[0]->mSrc[0].mTemp < 0) { @@ -22913,7 +22915,7 @@ void InterCodeProcedure::Close(void) { GrowingTypeArray tstack(IT_NONE); - CheckFunc = !strcmp(mIdent->mString, "main"); + CheckFunc = !strcmp(mIdent->mString, "game_walking"); CheckCase = false; mEntryBlock = mBlocks[0];