Fix propagation of volatile flags

This commit is contained in:
drmortalwombat 2023-04-15 21:53:33 +02:00
parent bb00b5af12
commit e5805716e2
3 changed files with 15 additions and 4 deletions

View File

@ -163,8 +163,15 @@ __asm getpch
cpx #IOCHM_PETSCII_1
bcc w3
cmp #219
bcs w3
cmp #65
bcc w3
cmp #193
bcc w4
eor #$a0
w4:
cmp #123
bcs w3
cmp #97

View File

@ -158,8 +158,15 @@ __asm getpch
cpx #IOCHM_PETSCII_1
bcc w3
cmp #219
bcs w3
cmp #65
bcc w3
cmp #193
bcc w4
eor #$a0
w4:
cmp #123
bcs w3
cmp #97
@ -800,9 +807,6 @@ static const char * scanpat(const char * fmt, char * mask)
} while (fc && fc != ']');
if (fc == ']')
fmt++;
if (negated)
{
for(char i=4; i<32; i++)

View File

@ -33623,7 +33623,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
}
else if (
mIns[i + 0].ChangesAccuAndFlag() &&
mIns[i + 1].mType == ASMIT_STA && mIns[i + 2].mType == ASMIT_LDA &&
mIns[i + 1].mType == ASMIT_STA && mIns[i + 2].mType == ASMIT_LDA && !(mIns[i + 2].mFlags & NCIF_VOLATILE) &&
mIns[i + 1].SameEffectiveAddress(mIns[i + 2]))
{
mIns[i + 0].mLive |= mIns[i + 2].mLive & (LIVE_CPU_REG_A | LIVE_CPU_REG_Z);