mirror of
https://github.com/cc65/cc65.git
synced 2024-12-23 04:30:10 +00:00
Merge pull request #2291 from colinleroy/fix-256-minus-1
Fix bug introduced in #2260
This commit is contained in:
commit
d805211002
@ -3697,13 +3697,7 @@ void g_dec (unsigned flags, unsigned long val)
|
||||
} else {
|
||||
/* Inline the code */
|
||||
if (val < 0x300) {
|
||||
if ((CPUIsets[CPU] & CPU_ISET_65SC02) != 0 && val == 1) {
|
||||
unsigned L = GetLocalLabel();
|
||||
AddCodeLine ("bne %s", LocalLabelName (L));
|
||||
AddCodeLine ("dex");
|
||||
g_defcodelabel (L);
|
||||
AddCodeLine ("dea");
|
||||
} else if ((val & 0xFF) != 0) {
|
||||
if ((val & 0xFF) != 0) {
|
||||
unsigned L = GetLocalLabel();
|
||||
AddCodeLine ("sec");
|
||||
AddCodeLine ("sbc #$%02X", (unsigned char) val);
|
||||
|
@ -168,6 +168,31 @@ void post_dec_assign_test(void)
|
||||
failures++;
|
||||
}
|
||||
|
||||
void dex_tests(void) {
|
||||
static unsigned int a, b;
|
||||
|
||||
a = 257;
|
||||
b = a - 1;
|
||||
if (b != 256) {
|
||||
printf("fail 257 => 256\n");
|
||||
failures++;
|
||||
}
|
||||
|
||||
a = 256;
|
||||
b = a - 1;
|
||||
if (b != 255) {
|
||||
printf("fail 256 => 255\n");
|
||||
failures++;
|
||||
}
|
||||
|
||||
a = 255;
|
||||
b = a - 1;
|
||||
if (b != 254) {
|
||||
printf("fail 255 => 254\n");
|
||||
failures++;
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int0 = 5;
|
||||
@ -186,6 +211,8 @@ int main(void)
|
||||
int1 = 5;
|
||||
post_dec_assign_test();
|
||||
|
||||
dex_tests();
|
||||
|
||||
printf("failures: %d\n",failures);
|
||||
|
||||
return failures;
|
||||
|
Loading…
Reference in New Issue
Block a user