> You guys have come up with a very weird idea of what > non-addressability means. These fields are all addressable, they > are just not directly addressable.
Terminology is always tricky here. "addressable" in this context means that no pointer can point directly to the field. So if I have struct foo {int x; float y; } bar; int *pi; float *pf; and mark X as "nonaddressable", I know that an assigment to *pi can't affect bar.x. But if Y isn't similarly marked, an assignment to *pf MIGHT affect bar.y unless I could somehow prove by value tracking that it can't.