[llvm-dev] Propagating noalias annotation

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 16 23:55:12 PST 2017


On 11/17/2017 01:49 AM, Hongbin Zheng wrote:
> Could you elaborate "Note that, without further analysis of the uses 
> of the potentially-noalias pointers, you can do this only ..."?
> Why the uses, instead of the def, of pointer matter?

Both matter.

static int foo(int *a, int *b) {
   return a[0] + b[1];
}

int bar(int *x) {
   return foo(x+1, x);
}

You can't mark a and b as noalias here, even though NoAlias(x+1, x) == 
true. This is why I was saying that, unless the pointers come from 
distinct, identified underlying objects, you need to look at the uses of 
the pointers too.

  -Hal

P.S. As discussed in D4609, we probably want to try adding CGSCC AA 
wrappers, to look back through function arguments, instead of using 
attribute propagation.

>
> Thanks
> Hongbin
>
> On Thu, Nov 16, 2017 at 11:21 PM, Hal Finkel via llvm-dev 
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     Hi, Alexandre,
>
>     We don't have anything currently which does this. Note that,
>     without further analysis of the uses of the potentially-noalias
>     pointers, you can do this only for arguments with distinct (and
>     identified) underlying objects (i.e., you need something a bit
>     stronger than just "non-aliasing pointers").
>
>      -Hal
>
>
>     On 11/16/2017 10:11 AM, via llvm-dev wrote:
>
>         Is this what you are looking for?
>
>         https://reviews.llvm.org/D4609
>
>         Best,
>
>         Haicheng Wu
>
>         On 2017-11-14 20:34, Alexandre Isoard via llvm-dev wrote:
>
>             Hello,
>
>             Do we have a pass that propagate the noalias annotation
>             down to the
>             callee when:
>             - it is static
>             - it is always called with non aliasing pointers
>             ?
>
>             Or maybe that is incorrect?
>
>             -- 
>
>             ALEXANDRE ISOARD
>
>         _______________________________________________
>         LLVM Developers mailing list
>         llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>         http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>         <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>
>
>     -- 
>     Hal Finkel
>     Lead, Compiler Technology and Programming Languages
>     Leadership Computing Facility
>     Argonne National Laboratory
>
>
>     _______________________________________________
>     LLVM Developers mailing list
>     llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>     <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>
>

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171117/0226b3c0/attachment.html>


More information about the llvm-dev mailing list