With the latest version bootstrapped on PC debian: $ /home/etienne/projet/toolchain/bin/gcc -v Reading specs from /home/etienne/projet/toolchain/lib/gcc/i686-pc-linux- gnu/4.0.0/specs Configured with: ../configure --prefix=/home/etienne/projet/toolchain --enable- languages=c Thread model: posix gcc version 4.0.0 20041017 (experimental)
compiling this code: typedef struct { unsigned limit : 16; unsigned base : 24; unsigned accessed : 1; /* if 1 */ unsigned writable : 1; /* if 1 */ unsigned expansion_direction : 1; /* down if 1 */ unsigned cste_10 : 2; unsigned dpl : 2; unsigned present : 1; unsigned limit_msb : 4; unsigned available : 1; unsigned cste_0 : 1; unsigned big : 1; unsigned granularity : 1; unsigned base_msb : 8; } __attribute__ ((packed)) dataseg_t; dataseg_t dataseg = { .limit = 0xFFFF, .base = 0, .accessed = 1, .writable = 1, .cste_10 = 2, .present = 1, .limit_msb = 0xFF, .big = 0, .granularity = 1 }; leads to this warning (line of .limit_msb): $ /home/etienne/projet/toolchain/bin/gcc -Os -c tmp.c tmp.c:25: warning: large integer implicitly truncated to unsigned type Etienne. -- Summary: strange warning Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: etienne_lorrain at yahoo dot fr CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18057