Fix broken volatile check in (),y

This commit is contained in:
drmortalwombat 2023-03-11 11:29:35 +01:00
parent aed086bdb9
commit 7d6f637948
2 changed files with 50 additions and 50 deletions

View File

@ -1984,6 +1984,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr
ins->mSrc[0] = ins->mSrc[1]; ins->mSrc[0] = ins->mSrc[1];
ins->mSrc[1].mTemp = -1; ins->mSrc[1].mTemp = -1;
ins->mSrc[1].mType = IT_NONE; ins->mSrc[1].mType = IT_NONE;
ins->mNumOperands = 1;
UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars); UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars);
@ -2024,6 +2025,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr
ins->mOperator = IA_NEG; ins->mOperator = IA_NEG;
ins->mSrc[1].mTemp = -1; ins->mSrc[1].mTemp = -1;
ins->mSrc[1].mType = IT_NONE; ins->mSrc[1].mType = IT_NONE;
ins->mNumOperands = 1;
UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars); UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars);
@ -2034,6 +2036,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr
ins->mCode = IC_UNARY_OPERATOR; ins->mCode = IC_UNARY_OPERATOR;
ins->mOperator = IA_NEG; ins->mOperator = IA_NEG;
ins->mSrc[1].mTemp = -1; ins->mSrc[1].mTemp = -1;
ins->mNumOperands = 1;
UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars); UpdateValue(ins, tvalue, aliasedLocals, aliasedParams, staticVars);

View File

@ -3701,8 +3701,6 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT
#endif #endif
} }
else if (mMode == ASMIM_INDIRECT_Y) else if (mMode == ASMIM_INDIRECT_Y)
{
if (!(mFlags & NCIF_VOLATILE))
{ {
if (data.mRegs[mAddress].mMode == NRDM_ZERO_PAGE && data.mRegs[mAddress + 1].mMode == NRDM_ZERO_PAGE && data.mRegs[mAddress].mValue + 1 == data.mRegs[mAddress + 1].mValue) if (data.mRegs[mAddress].mMode == NRDM_ZERO_PAGE && data.mRegs[mAddress + 1].mMode == NRDM_ZERO_PAGE && data.mRegs[mAddress].mValue + 1 == data.mRegs[mAddress + 1].mValue)
{ {
@ -3762,7 +3760,6 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT
else else
data.mRegs[CPU_REG_A].Reset(); data.mRegs[CPU_REG_A].Reset();
} }
}
if (ChangesAddress()) if (ChangesAddress())
data.ResetIndirect(mAddress); data.ResetIndirect(mAddress);
@ -37341,7 +37338,7 @@ void NativeCodeProcedure::RebuildEntry(void)
void NativeCodeProcedure::Optimize(void) void NativeCodeProcedure::Optimize(void)
{ {
CheckFunc = !strcmp(mInterProc->mIdent->mString, "mmc3_bank_prg"); CheckFunc = !strcmp(mInterProc->mIdent->mString, "diggers_list");
#if 1 #if 1
int step = 0; int step = 0;