https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94569
--- Comment #5 from Inbal Levi <sinbal2l at gmail dot com> --- Stumbled across another rule which might be relevant here is: [basic.align/1] [...] An object type imposes an alignment requirement on every object of that type; stricter alignment can be requested using the alignment specifier (9.12.2). Inherited from the C standard, which results in an error for the following code: #include <stdio.h> typedef struct U U; struct U { } __attribute__((aligned (32))); int main() { _Alignas(16) U my_u; // alignas(obj) of a weaker alignment than the type. } https://godbolt.org/z/tdEJgo