From fb72e8baf856c5b2aa7801c7a44b7822e488218a Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Wed, 1 May 2024 15:30:18 +0200 Subject: [PATCH] Fix over eager parameter reordering --- oscar64/InterCode.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 51c6e8f..6e2c953 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -898,7 +898,9 @@ bool InterCodeBasicBlock::CanSwapInstructions(const InterInstruction* ins0, cons ins1->mCode == IC_PUSH_FRAME || ins1->mCode == IC_POP_FRAME || ins1->mCode == IC_MALLOC || ins1->mCode == IC_FREE) return false; - if (ins0->mSrc[0].mMemory == IM_PROCEDURE && ins0->mSrc[0].mLinkerObject && ins0->mSrc[0].mLinkerObject->mProc && ins0->mSrc[0].mLinkerObject->mProc->mParamVars.Size() == 0) + if (ins0->mSrc[0].mMemory == IM_PROCEDURE && ins0->mSrc[0].mLinkerObject && ins0->mSrc[0].mLinkerObject->mProc && + ins0->mSrc[0].mLinkerObject->mProc->mLeafProcedure && + ins0->mSrc[0].mLinkerObject->mProc->mParamVars.Size() == 0) { if (ins1->mCode == IC_STORE) {