mirror of
https://github.com/cc65/cc65.git
synced 2025-02-28 20:29:46 +00:00
another testcase related to issue #1462
This commit is contained in:
parent
e13f57e86c
commit
b08dc28cc1
95
test/todo/bug1462-3.c
Normal file
95
test/todo/bug1462-3.c
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
|
||||||
|
/* issue #1462 - Bit-fields are still broken */
|
||||||
|
/* More testson "op= expression result value" that a naive fix might fail with */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
signed int a : 3;
|
||||||
|
unsigned int b : 3;
|
||||||
|
signed int c : 3;
|
||||||
|
unsigned int d : 3;
|
||||||
|
} T1;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
signed int a : 3;
|
||||||
|
signed int b : 3;
|
||||||
|
signed int c : 3;
|
||||||
|
signed int d : 3;
|
||||||
|
} T2;
|
||||||
|
|
||||||
|
|
||||||
|
int failures1 = 0;
|
||||||
|
int failures2 = 0;
|
||||||
|
|
||||||
|
void test1(void)
|
||||||
|
{
|
||||||
|
T1 a = { 3, 3, 3, 3 };
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = a.a += a.b + a.c;
|
||||||
|
if (i != 1) {
|
||||||
|
++failures1;
|
||||||
|
}
|
||||||
|
printf("i = %d, a.a = %d\n", i, a.a);
|
||||||
|
|
||||||
|
i = a.b *= -1;
|
||||||
|
if (i != 5 || a.b != 5) {
|
||||||
|
++failures1;
|
||||||
|
}
|
||||||
|
printf("i = %d, a.b = %d\n", i, a.b);
|
||||||
|
|
||||||
|
i = a.c * -1;
|
||||||
|
if (i != -3) {
|
||||||
|
++failures1;
|
||||||
|
}
|
||||||
|
printf("i = %d, a.c = %d\n", i, a.c);
|
||||||
|
|
||||||
|
i = a.d ^= -1;
|
||||||
|
if (i != 4 || a.d != 4) {
|
||||||
|
++failures1;
|
||||||
|
}
|
||||||
|
printf("i = %d, a.d = %d\n", i, a.d);
|
||||||
|
|
||||||
|
printf("Failures: %d\n", failures1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test2(void)
|
||||||
|
{
|
||||||
|
T2 b = { 3, 3, 4, 4 };
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = b.a++;
|
||||||
|
if (i != 3 || b.a != -4) {
|
||||||
|
++failures2;
|
||||||
|
}
|
||||||
|
printf("i = %d, b.a = %d\n", i, b.a);
|
||||||
|
|
||||||
|
i = ++b.b;
|
||||||
|
if (i != -4 || b.b != -4) {
|
||||||
|
++failures2;
|
||||||
|
}
|
||||||
|
printf("i = %d, b.b = %d\n", i, b.b);
|
||||||
|
|
||||||
|
i = b.c--;
|
||||||
|
if (i != -4 || b.c != 3) {
|
||||||
|
++failures2;
|
||||||
|
}
|
||||||
|
printf("i = %d, b.c = %d\n", i, b.c);
|
||||||
|
|
||||||
|
i = --b.d;
|
||||||
|
if (i != 3 || b.d != 3) {
|
||||||
|
++failures2;
|
||||||
|
}
|
||||||
|
printf("i = %d, b.d = %d\n", i, b.d);
|
||||||
|
|
||||||
|
printf("Failures: %d\n", failures2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
test1();
|
||||||
|
test2();
|
||||||
|
return failures1 + failures2;
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user