Skip to content

Commit

Permalink
Merge pull request cc65#2397 from colinleroy/bug-2395-test
Browse files Browse the repository at this point in the history
Add test case for issue cc65#2395
  • Loading branch information
mrdudz authored Feb 1, 2024
2 parents 51b946b + 1e300bf commit a7ac9b7
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions test/todo/bug2395.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@

/* bug #2395: Bitwise operators with a boolean expression fail when optimized */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char a, b;
unsigned char c = 199;
unsigned char d = 100;

int main(void) {
int fails = 0;

a = c ^ (d != 0);
b = c ^ 1;

printf("%u ^ (%u != 0) => %u\n", c, d, a);
if (a != b) {
printf("XOR error: a %d instead of %d\n", a, b);
fails++;
}

a = c | (d != 0);
b = c | 1;

printf("%u | (%u != 0) => %u\n", c, d, a);
if (a != b) {
printf("OR error: a %d instead of %d\n", a, b);
fails++;
}

a = c & (d != 0);
b = c & 1;

printf("%u & (%u != 0) => %u\n", c, d, a);
if (a != b) {
printf("AND error: a %d instead of %d\n", a, b);
fails++;
}
printf("%d errors\n", fails);

#ifdef __OPT__
return fails;
#else
/* Force exit failure on non-optimised version, which works,
* otherwise it breaks the build
*/
return 1;
#endif
}

0 comments on commit a7ac9b7

Please sign in to comment.