From 1805e311b886abbc1dfa6bba59a6e3a2c453e328 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 15 Aug 2022 22:08:00 +0200 Subject: [PATCH] Add data flow calculation before moving const op ups to fix change of used dst temps in other branch --- oscar64/InterCode.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) 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;