------- Additional Comments From dberlin at gcc dot gnu dot org 2005-07-06 00:16 ------- It's in the ml archives, i'll try to find it.
Basically, Mark and friends believe that in C, it's legal to add or subtract some bytes from a pointer to a field of a structure and have a valid pointer to some other field of that structure. This idiom is apparently in common usage regardless. Nathan queried the C++ committee, and they actually *don't* think it's legal in C++, but we have no way of differentiating this from dynamic_cast at the moment, so we have to be conservative. Thus, a pointer to a field passed to a function must be considered to clobber the entire structure that field is contained in (all the way up the structure chain). IE if a pointer to a structure field escapes, the entire structure instance escapes. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21407