https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65685
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- There are two facets to this. GCC allows alignas with a weaker alignment on a type, and ignores it. GCC also allows alignas with a weaker alignment on an object declaration, and reduces the alignment. In both cases it would be conforming to issue a warning, even if the current behaviour is retained. struct alignas(8) S {}; struct alignas(2) U { S s; }; // { dg-error "alignment" } // This assertion passes, meaning the invalid alignas(2) was silently ignored. static_assert( alignof(U) == alignof(S), "" ); alignas(1) S s; // { dg-error "align" } alignas(1) U u; // { dg-error "align" } #ifdef __GNUC__ // These assertions pass, so GCC honours the invalid alignas(1) requests. static_assert( alignof(s) == 1, "GCC reduced alignment of s" ); // WRONG! static_assert( alignof(u) == 1, "GCC reduced alignment of u" ); // WRONG! #endif