Fix assert in samples

This commit is contained in:
drmortalwombat 2024-04-09 15:57:53 +02:00
parent fefa462730
commit 2cdc95ba05

View File

@ -23378,6 +23378,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
mTrueJump->mIns.Insert(0, ins); mTrueJump->mIns.Insert(0, ins);
mTrueJump->mIns[0].mLive |= LIVE_CPU_REG_C | mIns[ns - 1].mLive; mTrueJump->mIns[0].mLive |= LIVE_CPU_REG_C | mIns[ns - 1].mLive;
mIns.Remove(ns - 2); mIns.Remove(ns - 2);
mExitRequiredRegs += CPU_REG_A;
mTrueJump->mEntryRequiredRegs += CPU_REG_A; mTrueJump->mEntryRequiredRegs += CPU_REG_A;
mTrueJump->CheckLive(); mTrueJump->CheckLive();
changed = true; changed = true;
@ -23387,6 +23388,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
mFalseJump->mIns.Insert(0, ins); mFalseJump->mIns.Insert(0, ins);
mFalseJump->mIns[0].mLive |= LIVE_CPU_REG_C | mIns[ns - 1].mLive; mFalseJump->mIns[0].mLive |= LIVE_CPU_REG_C | mIns[ns - 1].mLive;
mIns.Remove(ns - 2); mIns.Remove(ns - 2);
mExitRequiredRegs += CPU_REG_A;
mFalseJump->mEntryRequiredRegs += CPU_REG_A; mFalseJump->mEntryRequiredRegs += CPU_REG_A;
mFalseJump->CheckLive(); mFalseJump->CheckLive();
changed = true; changed = true;
@ -23403,6 +23405,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
if (mTrueJump->mEntryRequiredRegs[CPU_REG_A]) if (mTrueJump->mEntryRequiredRegs[CPU_REG_A])
mTrueJump->mIns[0].mLive |= LIVE_CPU_REG_A; mTrueJump->mIns[0].mLive |= LIVE_CPU_REG_A;
mIns.Remove(ns - 2); mIns.Remove(ns - 2);
mExitRequiredRegs += CPU_REG_X;
mTrueJump->mEntryRequiredRegs += CPU_REG_X; mTrueJump->mEntryRequiredRegs += CPU_REG_X;
mTrueJump->CheckLive(); mTrueJump->CheckLive();
changed = true; changed = true;
@ -23416,6 +23419,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
if (mFalseJump->mEntryRequiredRegs[CPU_REG_A]) if (mFalseJump->mEntryRequiredRegs[CPU_REG_A])
mFalseJump->mIns[0].mLive |= LIVE_CPU_REG_A; mFalseJump->mIns[0].mLive |= LIVE_CPU_REG_A;
mIns.Remove(ns - 2); mIns.Remove(ns - 2);
mExitRequiredRegs += CPU_REG_X;
mFalseJump->mEntryRequiredRegs += CPU_REG_X; mFalseJump->mEntryRequiredRegs += CPU_REG_X;
mFalseJump->CheckLive(); mFalseJump->CheckLive();
changed = true; changed = true;
@ -36396,7 +36400,7 @@ bool NativeCodeBasicBlock::OptimizeSingleEntryLoopInvariant(NativeCodeProcedure*
int si = 0; int si = 0;
while (si < mIns.Size() && !mIns[si].ChangesXReg()) while (si < mIns.Size() && !mIns[si].ChangesXReg())
si++; si++;
if (si >= 0 && mIns[si].mType == ASMIT_LDX && mIns[si].SameEffectiveAddress(tail->mIns[ei])) if (si < mIns.Size() && mIns[si].mType == ASMIT_LDX && mIns[si].SameEffectiveAddress(tail->mIns[ei]))
{ {
prev->mIns.Push(mIns[si]); prev->mIns.Push(mIns[si]);
mIns.Remove(si); mIns.Remove(si);