Fix invalid double dereference reorder

This commit is contained in:
drmortalwombat 2025-01-06 22:05:43 +01:00
parent 6170c81af3
commit 28e75a8fa2

View File

@ -19462,7 +19462,8 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray
else if (mInstructions[i + 0]->mCode == IC_LOAD && else if (mInstructions[i + 0]->mCode == IC_LOAD &&
mInstructions[i + 1]->mCode == IC_LOAD && mInstructions[i + 1]->mCode == IC_LOAD &&
mInstructions[i + 1]->mSrc[0].mTemp == mInstructions[i + 0]->mSrc[0].mTemp && mInstructions[i + 1]->mSrc[0].mTemp == mInstructions[i + 0]->mSrc[0].mTemp &&
mInstructions[i + 0]->mSrc[0].mIntConst > mInstructions[i + 1]->mSrc[0].mIntConst) mInstructions[i + 0]->mSrc[0].mIntConst > mInstructions[i + 1]->mSrc[0].mIntConst &&
mInstructions[i + 1]->mSrc[0].mTemp != mInstructions[i + 0]->mDst.mTemp)
{ {
SwapInstructions(mInstructions[i + 0], mInstructions[i + 1]); SwapInstructions(mInstructions[i + 0], mInstructions[i + 1]);
InterInstruction* ins(mInstructions[i + 0]); InterInstruction* ins(mInstructions[i + 0]);
@ -23033,8 +23034,8 @@ void InterCodeProcedure::BuildLocalAliasTable(void)
void InterCodeProcedure::Close(void) void InterCodeProcedure::Close(void)
{ {
GrowingTypeArray tstack(IT_NONE); GrowingTypeArray tstack(IT_NONE);
CheckFunc = !strcmp(mIdent->mString, "enemies_iterate"); CheckFunc = !strcmp(mIdent->mString, "getActor");
CheckCase = false; CheckCase = false;
mEntryBlock = mBlocks[0]; mEntryBlock = mBlocks[0];