Fix crash in optimizer due to lack of updated register dependecy set when splitting block in loop
This commit is contained in:
parent
e1736c8214
commit
c12bca7b4e
|
@ -40185,11 +40185,13 @@ bool NativeCodeBasicBlock::OptimizeInnerLoop(NativeCodeProcedure* proc, NativeCo
|
||||||
lblock->mBranch = head->mBranch;
|
lblock->mBranch = head->mBranch;
|
||||||
lblock->mTrueJump = head->mTrueJump;
|
lblock->mTrueJump = head->mTrueJump;
|
||||||
lblock->mFalseJump = head->mFalseJump;
|
lblock->mFalseJump = head->mFalseJump;
|
||||||
|
lblock->mEntryRequiredRegs = tail->mTrueJump->mEntryRequiredRegs;
|
||||||
|
|
||||||
eblock->mIns.Push(NativeCodeInstruction(iins, ASMIT_STX, ASMIM_ZERO_PAGE, zreg));
|
eblock->mIns.Push(NativeCodeInstruction(iins, ASMIT_STX, ASMIM_ZERO_PAGE, zreg));
|
||||||
eblock->mBranch = ASMIT_JMP;
|
eblock->mBranch = ASMIT_JMP;
|
||||||
eblock->mTrueJump = tail->mFalseJump;
|
eblock->mTrueJump = tail->mFalseJump;
|
||||||
eblock->mFalseJump = nullptr;
|
eblock->mFalseJump = nullptr;
|
||||||
|
eblock->mEntryRequiredRegs = tail->mFalseJump->mEntryRequiredRegs;
|
||||||
|
|
||||||
tail->mTrueJump = lblock;
|
tail->mTrueJump = lblock;
|
||||||
tail->mFalseJump = eblock;
|
tail->mFalseJump = eblock;
|
||||||
|
@ -51789,7 +51791,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
|
||||||
mInterProc = proc;
|
mInterProc = proc;
|
||||||
mInterProc->mLinkerObject->mNativeProc = this;
|
mInterProc->mLinkerObject->mNativeProc = this;
|
||||||
|
|
||||||
CheckFunc = !strcmp(mInterProc->mIdent->mString, "main");
|
CheckFunc = !strcmp(mInterProc->mIdent->mString, "diggers_vacate_room");
|
||||||
|
|
||||||
int nblocks = proc->mBlocks.Size();
|
int nblocks = proc->mBlocks.Size();
|
||||||
tblocks = new NativeCodeBasicBlock * [nblocks];
|
tblocks = new NativeCodeBasicBlock * [nblocks];
|
||||||
|
|
Loading…
Reference in New Issue