#include <stdio.h> struct X { unsigned a:4; }; int main() { struct X x = { 63u }; printf("%u\n", x.a); return 0; } // end.
result: g++ bug.cpp; ./a 15 g++ -O bug.cpp; ./a 63 wrong result!! -- Summary: bitfield wrong optimize Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: s__nakayama at infoseek dot jp http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26534