Fix volatile loads with unused result

This commit is contained in:
drmortalwombat 2022-03-26 12:30:48 +01:00
parent fc5c9f137a
commit 68e048b945
2 changed files with 7 additions and 1 deletions

View File

@ -2397,7 +2397,10 @@ bool InterInstruction::RemoveUnusedResultInstructions(InterInstruction* pre, Num
{ {
if (!requiredTemps[mDst.mTemp] && mDst.mTemp >= 0) if (!requiredTemps[mDst.mTemp] && mDst.mTemp >= 0)
{ {
if (!HasSideEffect(mCode)) if (mCode == IC_LOAD && mVolatile)
{
}
else if (!HasSideEffect(mCode))
{ {
mCode = IC_NONE; mCode = IC_NONE;
mDst.mTemp = -1; mDst.mTemp = -1;

View File

@ -11996,6 +11996,9 @@ bool NativeCodeBasicBlock::MoveAbsoluteLoadStoreUp(int at)
if (mIns[at + 1].mMode == ASMIM_ABSOLUTE_Y && mIns[j].ChangesYReg()) if (mIns[at + 1].mMode == ASMIM_ABSOLUTE_Y && mIns[j].ChangesYReg())
return false; return false;
if (mIns[j].mType == ASMIT_JSR)
return false;
j--; j--;
} }