public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Guenther <richard.guenther@gmail.com>
To: Li Feng <nemokingdom@gmail.com>
Cc: Tobias Grosser <grosser@fim.uni-passau.de>,
	gcc@gcc.gnu.org,  	Sebastian Pop <sebpop@gmail.com>,
	gcc-graphite <gcc-graphite@googlegroups.com>
Subject: Re: How could I get alias set information from data_reference_p
Date: Thu, 16 Jul 2009 09:16:00 -0000	[thread overview]
Message-ID: <84fc9c000907160215y1ea04fb5wf7c1aa135ddca9ea@mail.gmail.com> (raw)
In-Reply-To: <f18356030907160200l5662a8b2n90c363b6d7424263@mail.gmail.com>

On Thu, Jul 16, 2009 at 11:00 AM, Li Feng<nemokingdom@gmail.com> wrote:
> Hi Richard,
> On 7/16/09, Richard Guenther <richard.guenther@gmail.com> wrote:
>> 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?
> AS1 = {A,B}
> AS2 = {B,C}
>
> B is not neccessary to have only a single alias set number,
> for this situation, B will have alias number both 1 and 2 (it
> is in both alias set),
> A will be with alias number 1 and
> C will be with alias number 2.
> So A and C got different alias set number, we could conclude
> that they are not alias.
> While for A and B or B and C, as B got alias number both 1 and 2,
> so they may alias.

I see.  That would work.

Richard.

> Li
>

  reply	other threads:[~2009-07-16  9:16 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-14  6:01 Li Feng
2009-07-14  8:54 ` Richard Guenther
2009-07-14  9:12   ` Li Feng
2009-07-14  9:40     ` Richard Guenther
2009-07-14 15:14       ` Sebastian Pop
2009-07-14 15:26         ` Richard Guenther
2009-07-14 16:03           ` Sebastian Pop
2009-07-14 16:09             ` Sebastian Pop
2009-07-14 21:34               ` Richard Guenther
2009-07-15  7:59                 ` Li Feng
2009-07-15 11:02                 ` Tobias Grosser
2009-07-15 11:26                   ` Richard Guenther
2009-07-15 19:16                     ` Tobias Grosser
2009-07-15 20:46                       ` Richard Guenther
2009-07-15 20:49                         ` Richard Guenther
     [not found]                         ` <15137_1247690941_4A5E40BC_15137_586_1_84fc9c000907151348s41395cc5u6cfacb60cde78bfa@mail.gmail.com>
2009-07-15 23:16                           ` Tobias Grosser
2009-07-16  8:39                             ` Richard Guenther
2009-07-16  9:00                               ` Li Feng
2009-07-16  9:16                                 ` Richard Guenther [this message]
2009-07-16 15:45                                 ` Daniel Berlin
2009-07-16 16:04                                   ` Sebastian Pop
2009-07-17  1:36                                   ` Li Feng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=84fc9c000907160215y1ea04fb5wf7c1aa135ddca9ea@mail.gmail.com \
    --to=richard.guenther@gmail.com \
    --cc=gcc-graphite@googlegroups.com \
    --cc=gcc@gcc.gnu.org \
    --cc=grosser@fim.uni-passau.de \
    --cc=nemokingdom@gmail.com \
    --cc=sebpop@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).