1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-19 06:31:31 +00:00
cc65/test/val/bug1462-biefield-assign-2.c
2022-09-18 22:29:41 +08:00

52 lines
686 B
C

/* issue #1462 - Bit-fields are still broken */
/* even the = operation is buggy in certain ways */
#include <stdio.h>
typedef struct {
signed int a : 3;
signed int b : 3;
signed int c : 3;
} T;
int failures = 0;
T *f(T *t)
{
t->a = 0;
t->c = 0;
return t;
}
void test(void)
{
T a = { 7, 0, 7 };
T *p = &a;
a.b = f(p)->a;
if (a.a != 0) {
++failures;
}
printf("%d\n", a.a);
if (p->b != 0) {
++failures;
}
printf("%d\n", p->b);
if ((&a)->c != 0) {
++failures;
}
printf("%d\n", (&a)->c);
printf("Failures: %d\n", failures);
}
int main(void)
{
test();
return failures;
}