Fix loss of type reduction in loop causing overflow error

This commit is contained in:
drmortalwombat 2025-03-15 12:05:34 +01:00
parent 242d7f1700
commit bedafe7b6f

View File

@ -15996,7 +15996,7 @@ bool InterCodeBasicBlock::SingleTailLoopOptimization(const NumberSet& aliasedPar
else if (nins->mCode == IC_BINARY_OPERATOR && nins->mOperator == IA_ADD && nins->mSrc[0].mTemp == lins->mDst.mTemp && !nins->mDst.IsNotUByte()) else if (nins->mCode == IC_BINARY_OPERATOR && nins->mOperator == IA_ADD && nins->mSrc[0].mTemp == lins->mDst.mTemp && !nins->mDst.IsNotUByte())
{ {
} }
else else if (lins->mSrc[0].IsUByte()) // ensure no overflow
{ {
int s = indexScale[lins->mSrc[0].mTemp]; int s = indexScale[lins->mSrc[0].mTemp];
@ -23433,7 +23433,7 @@ void InterCodeProcedure::Close(void)
{ {
GrowingTypeArray tstack(IT_NONE); GrowingTypeArray tstack(IT_NONE);
CheckFunc = !strcmp(mIdent->mString, "close_op"); CheckFunc = !strcmp(mIdent->mString, "main");
CheckCase = false; CheckCase = false;
mEntryBlock = mBlocks[0]; mEntryBlock = mBlocks[0];