https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36566
--- Comment #13 from Rene Rahn <rene.r...@fu-berlin.de> --- (In reply to Eric Gallager from comment #12) > (In reply to Rene Rahn from comment #10) > > I know this is quite old now. But can someone explain me why using `#pragma > > pack(push, 1)` does work then? I couldn't find enough resources on that. The > > only thing I found is, that it does literally the same. But wouldn't then > > the references/pointers still not be valid? > > > > So if I change the code to: > > > > ``` > > #pragma pack(push, 1) > > struct Squeeze > > { > > short s; > > }; > > #pragma pack(pop) > > ``` > > > > Then it works on godbolt with gcc-trunk. > > There are several bugs open about inconsistencies between > __attribute__((packed)) and #pragma pack; see for example: bug 93910, bug > 92900, bug 68160, and bug 60972 Ah great. Thanks for pointing to this.