Fix negative array access in native code path propagation

This commit is contained in:
drmortalwombat 2022-10-16 10:49:51 +02:00
parent 77010a0ab2
commit 8ee390a532

View File

@ -14679,6 +14679,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
} }
mIns.Remove(i + 1); mIns.Remove(i + 1);
changed = true; changed = true;
continue;
} }
else if (mFalseJump->mEntryRequiredRegs[mIns[i + 1].mAddress] && else if (mFalseJump->mEntryRequiredRegs[mIns[i + 1].mAddress] &&
!mTrueJump->mEntryRequiredRegs[mIns[i + 1].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 1].mAddress] &&
@ -14691,6 +14692,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
} }
mIns.Remove(i + 1); mIns.Remove(i + 1);
changed = true; changed = true;
continue;
} }
} }
} }
@ -14730,7 +14732,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
mIns.Remove(i); mIns.Remove(i);
} }
changed = true; changed = true;
i--; continue;
} }
else if (mFalseJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && mFalseJump->mEntryRequiredRegs[mIns[i + 6].mAddress] && else if (mFalseJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && mFalseJump->mEntryRequiredRegs[mIns[i + 6].mAddress] &&
!mTrueJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 6].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 6].mAddress] &&
@ -14749,7 +14751,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
mIns.Remove(i); mIns.Remove(i);
} }
changed = true; changed = true;
i--; continue;
} }
} }
} }
@ -14786,7 +14788,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
mIns.Remove(i); mIns.Remove(i);
} }
changed = true; changed = true;
i--; continue;
} }
else if (mFalseJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && mFalseJump->mEntryRequiredRegs[mIns[i + 6].mAddress] && else if (mFalseJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && mFalseJump->mEntryRequiredRegs[mIns[i + 6].mAddress] &&
!mTrueJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 6].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 3].mAddress] && !mTrueJump->mEntryRequiredRegs[mIns[i + 6].mAddress] &&
@ -14803,7 +14805,7 @@ bool NativeCodeBasicBlock::PropagateSinglePath(void)
mIns.Remove(i); mIns.Remove(i);
} }
changed = true; changed = true;
i--; continue;
} }
} }
} }