mirror of
https://github.com/cc65/cc65.git
synced 2024-08-16 12:29:03 +00:00
Fixed an old test case for unsigned enum bit-fields that are supposed to be int-promoted.
52 lines
686 B
C
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;
|
|
}
|