This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How could I get alias set information from data_reference_p


On Thu, Jul 16, 2009 at 1:15 AM, Tobias
Grosser<grosser@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.guenther@gmail.com> wrote:
>> > On Wed, Jul 15, 2009 at 9:15 PM, Tobias
>> > Grosser<grosser@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
>
>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]