On Thu, Jul 16, 2009 at 1:15 AM, Tobias Grosser<gros...@fim.uni-passau.de> wrote: > 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?
Actually I was too fast (or rather it was too late), an example with A -- B -- C would be int a, c; void foo(int *p) with B == (*p). B may alias a and c but a may not alias c. So, back to my first question then, which is still valid. 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 dependencies. How do you derive at 'A and C do not alias' from looking at the alias set numbers for AS1 and AS2. How do you still figure out that B aliases A and C just from looking at the alias set numbers? Or rather, what single alias set number does B get? Richard. > Tobi > > > >