https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79216
--- Comment #3 from H. Peter Anvin <hpa at zytor dot com> --- It does indeed, I don't know why I missed it. The only thing that I really see as a problem with it is that it doesn't allow the assignment of endianness to scalar pointers, e.g.: uint32_t __attribute__((scalar_storage_order("big-endian"))) *blah; blah = &foo.bar; /* bigendian field in a structure */ The other thing that seems problematic to me (but this is a quality-of-implementation issue, not a syntactic problem) is that it seems that the endianness restrictions only apply on opposite-endian architectures. This makes programmer errors more likely.