On Sat, 2005-11-26 at 02:14 +0000, shreyas krishnan wrote:
> Hi
> I am trying to understand the workings of alias analysis and why
> it behaves it a particular way. I am using the alias analysis branch
> of gcc4.0
>
> I find that for the following snippet of code
> main()
> {
> foo(A)
>
> }
>
> foo(int** array) { }
>
>
> Array is retuned as points-to ANYTHING in the points to set!!
> Interprocedual alias analayis is supposed to be hard but why is that
> ? If the functions address is not taken, isnt is a matter of just
> matching formal and actual arguments and doing a closure.
No, global functions that are non-static can still be called from
outside the translation unit, so you still can't know what their
arguments will alias. They must be assumed to aliasing any global +
anything that escape.
Context sensitive pointer analysis could tell you that the call to foo
in main doesn't alias anything.
> Is the
> persumed hardness because the whole source of the program might not be
> available and so all the call sites might not be found.
It's not presumed hardness. It is a matter of simple correctness.
>
> I will apreciate any answers/papers/ pointers to understand this
> thanks
> Shrey