Moved and improved test cases for Issue #1462.

Fixed an old test case for unsigned enum bit-fields that are supposed to be int-promoted.
This commit is contained in:
acqn
2021-05-27 15:44:52 +08:00
committed by Oliver Schmidt
parent 5adb29ce31
commit d69e81cd66
5 changed files with 122 additions and 18 deletions

51
test/val/bug1462-2.c Normal file
View File

@@ -0,0 +1,51 @@
/* 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;
}