Fix short param forwarding of struct elements

This commit is contained in:
drmortalwombat 2024-09-16 17:45:32 +02:00
parent 5aeec2fad4
commit 68b57bb9a8

View File

@ -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];