1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-01 13:41:34 +00:00

Merge pull request #1691 from acqn/OptCmp1_Fix

[cc65] Fixed OptCmp1 with certain code patterns with labels.
This commit is contained in:
Bob Andrews 2022-03-01 14:28:53 +01:00 committed by GitHub
commit a88704c6b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 2 deletions

View File

@ -309,10 +309,10 @@ unsigned OptCmp1 (CodeSeg* S)
/* Insert the ora instead */
X = NewCodeEntry (OP65_ORA, L[0]->AM, L[0]->Arg, 0, L[0]->LI);
CS_InsertEntry (S, X, I);
CS_InsertEntry (S, X, I+3);
/* Remove all other instructions */
CS_DelEntries (S, I+1, 3);
CS_DelEntries (S, I, 3);
/* Remember, we had changes */
++Changes;

23
test/val/bug1690.c Normal file
View File

@ -0,0 +1,23 @@
/* OptCmp1 messed up with labels */
#include <stdio.h>
int main(void)
{
register unsigned int x = 0x200;
register unsigned int y = 0;
do
{
++y;
}
while (--x);
if (y != 0x200)
{
printf("0x%X\n", y);
return 1;
}
return 0;
}