mirror of
https://github.com/cc65/cc65.git
synced 2024-06-08 15:29:37 +00:00
Add test case for issue #2395
This commit is contained in:
parent
eb1741dbcc
commit
5a2d5ef7cd
55
test/todo/bug2395.c
Normal file
55
test/todo/bug2395.c
Normal file
|
@ -0,0 +1,55 @@
|
|||
|
||||
/* bug #927: format specifiers related to leading zeros do not work as expected */
|
||||
|
||||
/* expected output:
|
||||
0023
|
||||
0023
|
||||
-0023
|
||||
-023
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
unsigned char a, b;
|
||||
unsigned char c = 199;
|
||||
unsigned char d = 100;
|
||||
|
||||
/* Bitwise operators with a boolean expression fail when optimized */
|
||||
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);
|
||||
|
||||
/* Force exit failure, otherwise the -g version, which works,
|
||||
* breaks the build
|
||||
*/
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue
Block a user