diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index fe5ec6b..b50ee3d 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -6246,7 +6246,13 @@ bool InterCodeBasicBlock::PropagateConstOperationsUp(void) } eb->mInstructions.Insert(di, nins); + if (ins->mDst.mTemp >= 0) + eb->mExitRequiredTemps += ins->mDst.mTemp; } + + if (ins->mDst.mTemp >= 0) + mEntryRequiredTemps += ins->mDst.mTemp; + mInstructions.Remove(i); changed = true; } @@ -12409,6 +12415,8 @@ void InterCodeProcedure::PropagateConstOperationsUp(void) ResetVisited(); mEntryBlock->CollectEntryBlocks(nullptr); + BuildDataFlowSets(); + bool changed; do { changed = false;