X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fcoptc02.c;h=bffb5acc8da8a3578e5c93fb35a4d4943b042af4;hb=112ae0e3db511ddd92e769c11328646ebe2a6240;hp=816f92c52e95f6c44f080ff248eb86efbafe57f3;hpb=f38852df82b804f021c9a311a324fc3b0b74dbe7;p=cc65 diff --git a/src/cc65/coptc02.c b/src/cc65/coptc02.c index 816f92c52..bffb5acc8 100644 --- a/src/cc65/coptc02.c +++ b/src/cc65/coptc02.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2001-2002 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@cc65.org */ +/* (C) 2001-2005, Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -131,7 +131,7 @@ unsigned Opt65C02BitOps (CodeSeg* S) !CS_RangeHasLabel (S, I+1, 2) && CS_GetEntries (S, L+1, I+1, 2) && (L[1]->OPC == OP65_AND || L[1]->OPC == OP65_ORA) && - CE_KnownImm (L[1]) && + CE_IsConstImm (L[1]) && L[2]->OPC == OP65_STA && L[2]->AM == L[0]->AM && strcmp (L[2]->Arg, L[0]->Arg) == 0 && @@ -201,11 +201,14 @@ unsigned Opt65C02Stores (CodeSeg* S) /* Get next entry */ CodeEntry* E = CS_GetEntry (S, I); - /* Check for the sequence */ - if (E->OPC == OP65_STA && + /* Check for a store with a register value of zero and an addressing + * mode available with STZ. + */ + if (((E->OPC == OP65_STA && E->RI->In.RegA == 0) || + (E->OPC == OP65_STX && E->RI->In.RegX == 0) || + (E->OPC == OP65_STY && E->RI->In.RegY == 0)) && (E->AM == AM65_ZP || E->AM == AM65_ABS || - E->AM == AM65_ZPX || E->AM == AM65_ABSX ) && - E->RI->In.RegA == 0) { + E->AM == AM65_ZPX || E->AM == AM65_ABSX)) { /* Replace by STZ */ CodeEntry* X = NewCodeEntry (OP65_STZ, E->AM, E->Arg, 0, E->LI);