diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index fb18378..96a7ade 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -5584,7 +5584,7 @@ void InterCodeBasicBlock::GenerateTraces(bool expand, bool compact) { int sz = mInstructions.Size(); - if (mFalseJump && sz > 0 && mInstructions[sz - 1]->mCode == IC_BRANCH && mInstructions[sz - 1]->mSrc[0].mType == IT_BOOL && mInstructions[sz - 1]->mSrc[0].mTemp < 0) + if (mFalseJump && sz > 0 && mInstructions[sz - 1]->mCode == IC_BRANCH && (mInstructions[sz - 1]->mSrc[0].mType == IT_BOOL || IsIntegerType(mInstructions[sz - 1]->mSrc[0].mType)) && mInstructions[sz - 1]->mSrc[0].mTemp < 0) { mInstructions[sz - 1]->mCode = IC_JUMP; mInstructions[sz - 1]->mNumOperands = 0; @@ -20285,7 +20285,7 @@ void InterCodeProcedure::Close(void) { GrowingTypeArray tstack(IT_NONE); - CheckFunc = !strcmp(mIdent->mString, "interpret_statement"); + CheckFunc = !strcmp(mIdent->mString, "palette_draw"); CheckCase = false; mEntryBlock = mBlocks[0]; diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index a38fa3e..40d7fc4 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -30258,6 +30258,7 @@ bool NativeCodeBasicBlock::MoveStoreYUp(int at) if (ins.RequiresXReg()) mIns[at].mLive |= LIVE_CPU_REG_X; if (ins.RequiresAccu()) mIns[at].mLive |= LIVE_CPU_REG_A; + if (ins.RequiresCarry()) mIns[at].mLive |= LIVE_CPU_REG_C; mIns[at - 1] = mIns[at]; mIns[at] = ins;