From bedafe7b6fc61c1625a183b059cc97dfb5801696 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sat, 15 Mar 2025 12:05:34 +0100 Subject: [PATCH] Fix loss of type reduction in loop causing overflow error --- oscar64/InterCode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 5178d72..5b915b0 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -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 + else if (lins->mSrc[0].IsUByte()) // ensure no overflow { int s = indexScale[lins->mSrc[0].mTemp]; @@ -23433,7 +23433,7 @@ void InterCodeProcedure::Close(void) { GrowingTypeArray tstack(IT_NONE); - CheckFunc = !strcmp(mIdent->mString, "close_op"); + CheckFunc = !strcmp(mIdent->mString, "main"); CheckCase = false; mEntryBlock = mBlocks[0];