On Wed, 2009-07-15 at 22:48 +0200, Richard Guenther wrote: > On Wed, Jul 15, 2009 at 10:46 PM, Richard > Guenther<richard.guent...@gmail.com> wrote: > > On Wed, Jul 15, 2009 at 9:15 PM, Tobias > > Grosser<gros...@fim.uni-passau.de> wrote: > >>> A note on Lis final graph algorithm. I don't understand why you want > >>> to allow data-references to be part of multiple alias-sets? (Of course > >>> I don't know how you are going to use the alias-sets ...) > >> > >> Just to pass more information to Graphite. The easiest example might be > >> something like > >> > >> A -- B -- C > >> > >> if we have > >> > >> AS1 = {A,B} > >> AS2 = {B,C} > >> > >> we know that A and C do not alias and therefore do not have any > > > > No, from the above you _don't_ know that. How would you arrive > > at that conclusion? > > What I want to say is that, if A -- B -- C is supposed to be the alias graph > resulting from querying the alias oracle for the pairs (A, B), (A, C), (B, C) > then this is a result that will never occur. Because if (A, B) is true > and (B, C) is true then (A, C) will be true as well.
What for example for this case: void foo (*b) { int *a int *c if (bar()) a = b; else c = b; } I thought this may give us the example above, but it seems I am wrong. If the alias oracle is transitive that would simplify the algorithm a lot. Can we rely on the transitivity? Tobi