This is the mail archive of the
mailing list for the GCC project.
Re: Aliasing brokenness (Was: Re: [patch RFC] SH: Use FRAME_GROWS_DOWNWARD)
Mark Mitchell <email@example.com> writes:
> >>>That's the rule we've tried to use in GCC, as well; that if "p" and
> >>>"q" pointer to distinct types (not part of the same alias set) then
> >>>modifying "*p" cannot change the value of "*q", unless both accesses
> >>>are directly through a union. I don't know that the front ends and
> >>>optimizers are careful about preserving the user's access through
> >>>unions, but they could in theory be appropriately careful.
> > That is, I think 184.108.40.206 is an explicit statement of a restricted form
> > of the rule you describe in the first paragraph. It does not go
> > beyond what you described already.
> How do you read the "visibility" language? The idea that the
> visibility of the union is all that is required seemed to imply a
> stronger statement to me.
I'm sorry, you're right. I thought I understood, but I did not. The
effect is that if you have any pointer to a struct which appears in a
union, you may have a pointer to the initial parts of any other struct
in the union. Which is what you said. Sorry for the noise.