https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86259
--- Comment #20 from Davin McCall <davmac at davmac dot org> --- (In reply to Davin McCall from comment #19) > [...] If the result of offsetof has no provenance even the long form won't > work. "no provenance" meaning "empty provenance", and of course this is not actually correct; shouldn't have posted before coffee. However, if it had provenance of the member, that would be problematic. Having provenance of the compound object (s2') would be ok for Richard Biener's example of ((char *)&s2 + offsetof(S, a)) but not for my extended example of determining the address of the containing object using a pointer to a member object and offsetof.