From 68b57bb9a88b7a704b104ac7ac241e441a387a68 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 16 Sep 2024 17:45:32 +0200 Subject: [PATCH] Fix short param forwarding of struct elements --- oscar64/InterCode.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 4aeb443..95179d3 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -7732,7 +7732,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSetsForward(const GrowingVariab vr = ins->mDst.mRange; if (ins->mSrc[0].mTemp < 0 && ins->mSrc[0].mMemory == IM_FPARAM) - vr.Limit(mLocalParamValueRange[ins->mSrc[0].mVarIndex]); + vr.Limit(mLocalParamValueRange[ins->mSrc[0].mVarIndex + ins->mSrc[0].mIntConst]); #if 1 if (ins->mDst.mType == IT_INT8) { @@ -8409,7 +8409,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSetsForward(const GrowingVariab else if (ins->mCode == IC_STORE) { if (ins->mSrc[1].mTemp < 0 && ins->mSrc[1].mMemory == IM_FPARAM) - mLocalParamValueRange[ins->mSrc[1].mVarIndex] = ins->mSrc[0].mRange; + mLocalParamValueRange[ins->mSrc[1].mVarIndex + ins->mSrc[0].mIntConst] = ins->mSrc[0].mRange; } assert(mProc->mLocalValueRange.Size() == mExitRequiredTemps.Size()); @@ -21992,7 +21992,7 @@ void InterCodeProcedure::Close(void) { GrowingTypeArray tstack(IT_NONE); - CheckFunc = !strcmp(mIdent->mString, "main"); + CheckFunc = !strcmp(mIdent->mString, "f"); CheckCase = false; mEntryBlock = mBlocks[0];