https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82914
--- Comment #1 from Paul Eggert <eggert at gnu dot org> --- (In reply to Paul Eggert from comment #0) Sorry, but my example in comment #0 (although it illustrates a bug) doesn't illustrate the bug that crashed GCC. Here's a better example: struct t { long mem; }; __attribute__ ((aligned (2))) struct t a; struct __attribute__ ((aligned (2))) t b; struct t __attribute__ ((aligned (2))) c; struct t d __attribute__ ((aligned (2))); This compiles into: .comm a,8,2 .comm b,8,8 .comm c,8,2 .comm d,8,2 Here, only 'b' is aligned correctly. The variables a, c, and d have an alignment of only 2, but they should have an alignment of 8 because __attribute__ ((aligned (8))) is documented to never decrease the alignment of a structure, only to increase it. The GCC 7.2 documentation <https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Common-Variable-Attributes.html> says, "When used on a struct, or struct member, the 'aligned' attribute can only increase the alignment; in order to decrease it, the 'packed' attribute must be specified as well."