From cac7db4358cb9598f175a47fb9729e0dbb169759 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Wed, 10 Jan 2024 22:59:45 +0100 Subject: [PATCH] Fix memory size mismatch in reverse integer range propagation due to register renaming --- oscar64/InterCode.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 1894c99..9f7e896 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -8287,7 +8287,12 @@ void InterCodeBasicBlock::RestartLocalIntegerRangeSets(int num, const GrowingVar mFalseValueRange.SetSize(num, false); mLocalValueRange.SetSize(num, false); mMemoryValueSize.SetSize(num, false); - mEntryMemoryValueSize.SetSize(num, false); + mEntryMemoryValueSize.SetSize(num, true); + + if (mTrueJump && !mTrueJump->mVisited) + mTrueJump->mMemoryValueSize.SetSize(num, true); + if (mFalseJump && !mFalseJump->mVisited) + mFalseJump->mMemoryValueSize.SetSize(num, true); mEntryParamValueRange.SetSize(paramVars.Size(), false); mTrueParamValueRange.SetSize(paramVars.Size(), false); @@ -19292,7 +19297,7 @@ void InterCodeProcedure::Close(void) { GrowingTypeArray tstack(IT_NONE); - CheckFunc = !strcmp(mIdent->mString, "main"); + CheckFunc = !strcmp(mIdent->mString, "rebuild_screen"); CheckCase = false; mEntryBlock = mBlocks[0];