https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94655
--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> --- We want stores by user code to be diagnosed based on strict language rules (e.g., accessing a member via a reference to another member). To do that we either have to teach the middle end to avoid taking shortcuts that make the IL look like invalid user code, or be able to apply more permissive rules for stores synthesized by it. I assume the former is what you meant by "modify the &something.field into &MEM_REF[..., off]." My comment was in support of that because, provided the latter part actually meant "&MEM_REF[something, offsetoff (typeof (something), field)], it could be added to and subtracted from to obtain pointers to any other member of "something." (In contrast, &something.field + N is only valid for N <= sizeof something.field (flexible arrays aside)).