https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87373
--- Comment #26 from Murat Ursavaş <murat.ursavas at gmail dot com> --- (In reply to Richard Earnshaw from comment #21) > (In reply to Murat Ursavaş from comment #20) > > By the way, the hardware peripheral registers are aligned to 32bits. > > So why don't you define your struct as > > struct TestStructType > { > volatile unsigned one; > unsigned char two; > unsigned short three __attribute__((packed)); > }; > > And get rid of the pragma entirely? Richard, Some of the structs are not under my control, since they belong to manufacturer libraries. I need pack-1 for some due to storage and communication needs. And I didn't know that I could pack individual struct members. Please correct me if I'm wrong. This structs size is total 10 bytes, one:4, two:4 and three:2, right?