> That is not the example case we have given where this breaks. > The case where it breaks is exactly the case i have shown you. > > We have a pointer to a structure, and because you have not recorded > the type's alias relationships properly, we claim derferences that are > offsetted from the structure can not access the field. > This is a direct consequence of trying to use the parent's alias set > for that of the child type, instead of creating a new alias set.
Let me try to explain it this way: if you have a structure where all fields are nonaddressable, EVERY reference should have the same alias set, that of the structure. So they all conflict, as they should, and no other reference will conflict, which is also correct. It sounds like there's a bug here in that somebody is using the wrong alias set somewhere. All the RTL dumps posted in this thread (and the related one in gcc-patches) look correct, so it's right at the RTL level. That means that only place it's wrong would be at tree level, but get_alias_set also does the right thing.