https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102848
Bug ID: 102848 Summary: missing warning for bitfield overflow in C Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- G++ warns when assigning to a bit-field a value that cannot be represented in the object but GCC does not. $ cat x.c && /build/gcc-master/gcc/xgcc -B /build/gcc-master/gcc -S -Wall -Wextra x.c struct A { unsigned i, j: 3; }; void f (struct A *p) { p->i = -1; // missing warning p->j = -1; // missing warning in C, -Woverflow in C++ } void g (struct A *p) { if (p->i < 0) // -Wtype-limits in both C and C++, folded to false __builtin_abort (); } void h (struct A *p) { if (p->j < 0) // missing warning in both C and C++, folded to false __builtin_abort (); } x.c: In function āgā: x.c:14:12: warning: comparison of unsigned expression in ā< 0ā is always false [-Wtype-limits] 14 | if (p->i < 0) | ^