This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: More fun with aliasing - removing assignments?
On Tue, Aug 02, 2005 at 09:39:56AM -0400, Daniel Jacobowitz wrote:
> Then the alias analyzer's broken.
>
Broken? I'm saying that we currently get this right. I don't
know what position are you arguing.
> This isn't pointer arithmetic in the sense that you mean. It
> would be if the line were:
>
> ptr = &((cons *)(ptr))->cdr;
>
Yes, I realize this now. And that is not my point.
> which is equivalent to some offset plus ptr. But there's an extra
> dereference:
>
> ptr = &((cons *)(*ptr))->cdr;
> ^
>
This code does builds an address location out of an arbitrary integer:
unsigned int D.1142_8 = *ptr_1;
struct cons *D.1143_9 = (struct cons *) D.1142_8;
ptr_10 = &D.1143_9->cdr;
Does the language allow the creation of address locations out of
arbitrary integer values? Is the dereference of such an
address a defined operation? If so, then it's simply a matter of
recognizing this situation when computing points-anywhere
attributes.