From a5a27c039ea41b70057afb6bf88639f21104764b Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Sun, 20 Nov 2022 17:35:31 +0100 Subject: [PATCH] Fix __asume declaration in loop causing loss of temp chain --- oscar64/InterCode.cpp | 2 ++ oscar64/NativeCodeGenerator.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 65cb488..5b12859 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -13674,6 +13674,8 @@ void InterCodeProcedure::Close(void) BuildTraces(false); DisassembleDebug("Rebuilt traces"); + BuildDataFlowSets(); + do { TempForwarding(); } while (GlobalConstantPropagation()); diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index 22bd818..2e60eba 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -28437,8 +28437,8 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass mIns[i + 0].mLive |= LIVE_CPU_REG_A; mIns[i + 1].mLive |= LIVE_CPU_REG_A; - mIns[i + 3] = mIns[i + 2]; mIns[i + 3].mType = ASMIT_ADC; + mIns[i + 3].CopyMode(mIns[i + 2]); mIns[i + 2].mType = ASMIT_CLC; mIns[i + 2].mMode = ASMIM_IMPLIED; mIns[i + 2].mLive |= LIVE_CPU_REG_C; mIns[i + 4].mType = ASMIT_NOP; mIns[i + 4].mMode = ASMIM_IMPLIED; mIns[i + 2].mLive |= mIns[i + 1].mLive; @@ -30847,7 +30847,7 @@ void NativeCodeProcedure::RebuildEntry(void) void NativeCodeProcedure::Optimize(void) { - CheckFunc = !strcmp(mInterProc->mIdent->mString, "plant_draw_field"); + CheckFunc = !strcmp(mInterProc->mIdent->mString, "plant_place"); #if 1 int step = 0;