#include <stdio.h> void __attribute__ ((__noinline__)) add14(unsigned short int nextID) { struct { unsigned short int id: 14; } hdr; hdr.id = nextID; do { hdr.id++; if (printf ("should print 0x0000: 0x%04X\n", (unsigned int)hdr.id)) break; } while (1); } main() { add14 (0x3FFF); return 0; }
G++ miscompiles with optimization. GCC compiles correctly. Regression from 3.3. -- Summary: illegal loop store motion of bitfield Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: stuart at apple dot com GCC build triplet: i386-apple-darwin9 GCC host triplet: i386-apple-darwin9 GCC target triplet: i386-apple-darwin9 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32466