https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83060
--- Comment #4 from Nathan Sidwell <nathan at gcc dot gnu.org> --- I recall discussion years back that concluded the int *p = &a.s[-1]; case was well formed (there being no access specifier between the two fields). Of course the validity of the argument may have changed with updates to the std.