https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71255
--- Comment #5 from Florian Weimer <fw at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #4) > Can you provide an example how do you envision such a pragma? Should it > only have an effect on "sockaddr{,_*}"-named structs? I expect that we'd put something like this into <stdc-predef.h>: #if defined (__GNUC__) # if __GNUC__ >= 7 # pragma GCC may_alias struct sockaddr # pragma GCC may_alias struct sockaddr_storage # pragma GCC may_alias struct sockaddr_in # pragma GCC may_alias struct sockaddr_in6 # pragma GCC may_alias struct sockaddr_un … # endif /* __GNUC__ >= 4 */ #endif /* __GNUC__ */ After that, if GCC creates a declaration or forward definition of, say, struct sockaddr_in, it will automatically carry the may_alias attribute. (For consistency, this should also apply to nested C++ namespaces etc.)