mirror of
https://github.com/cc65/cc65.git
synced 2025-01-15 22:30:04 +00:00
Fixed optimizer bug in or/xor
git-svn-id: svn://svn.cc65.org/cc65/trunk@1425 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
b4326d1930
commit
f5243e514c
@ -403,7 +403,7 @@ static unsigned Opt_tosorax (CodeSeg* S, unsigned Push, unsigned Or,
|
|||||||
X = NewCodeEntry (OP65_STX, AM65_ZP, ZPHi, 0, PushEntry->LI);
|
X = NewCodeEntry (OP65_STX, AM65_ZP, ZPHi, 0, PushEntry->LI);
|
||||||
CS_InsertEntry (S, X, Push+1);
|
CS_InsertEntry (S, X, Push+1);
|
||||||
++Or; /* Correct the index */
|
++Or; /* Correct the index */
|
||||||
if (DirectOr) {
|
if (!DirectOr) {
|
||||||
X = NewCodeEntry (OP65_STA, AM65_ZP, ZPLo, 0, PushEntry->LI);
|
X = NewCodeEntry (OP65_STA, AM65_ZP, ZPLo, 0, PushEntry->LI);
|
||||||
CS_InsertEntry (S, X, Push+1);
|
CS_InsertEntry (S, X, Push+1);
|
||||||
++Or; /* Correct the index */
|
++Or; /* Correct the index */
|
||||||
@ -471,13 +471,13 @@ static unsigned Opt_tosxorax (CodeSeg* S, unsigned Push, unsigned Xor,
|
|||||||
* value in the zero page location.
|
* value in the zero page location.
|
||||||
*/
|
*/
|
||||||
DirectXor = (P->OPC == OP65_LDA &&
|
DirectXor = (P->OPC == OP65_LDA &&
|
||||||
(P->AM == AM65_IMM || P->AM == AM65_ZP || P->AM == AM65_ABS));
|
(P->AM == AM65_IMM || P->AM == AM65_ZP || P->AM == AM65_ABS));
|
||||||
|
|
||||||
/* Store the value into the zeropage instead of pushing it */
|
/* Store the value into the zeropage instead of pushing it */
|
||||||
X = NewCodeEntry (OP65_STX, AM65_ZP, ZPHi, 0, PushEntry->LI);
|
X = NewCodeEntry (OP65_STX, AM65_ZP, ZPHi, 0, PushEntry->LI);
|
||||||
CS_InsertEntry (S, X, Push+1);
|
CS_InsertEntry (S, X, Push+1);
|
||||||
++Xor; /* Correct the index */
|
++Xor; /* Correct the index */
|
||||||
if (DirectXor) {
|
if (!DirectXor) {
|
||||||
X = NewCodeEntry (OP65_STA, AM65_ZP, ZPLo, 0, PushEntry->LI);
|
X = NewCodeEntry (OP65_STA, AM65_ZP, ZPLo, 0, PushEntry->LI);
|
||||||
CS_InsertEntry (S, X, Push+1);
|
CS_InsertEntry (S, X, Push+1);
|
||||||
++Xor; /* Correct the index */
|
++Xor; /* Correct the index */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user