<div dir="ltr">Do you mean a and b are noalias if:<div><br></div><div><span style="font-size:12.8px">static int foo(int *a, int *b) {</span><br style="font-size:12.8px"><span style="font-size:12.8px"> return a[0] + b[0];</span><br style="font-size:12.8px"><span style="font-size:12.8px">}</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">int bar(int *x) {</span><br style="font-size:12.8px"><span style="font-size:12.8px"> return foo(x+1, x);</span><br style="font-size:12.8px"><span style="font-size:12.8px">}</span><br></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">?</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">To me, because "AA.alias((x+1, MemoryLocation::UnknownSize), </span><span style="font-size:12.8px">(x, MemoryLocation::UnknownSize))</span><span style="font-size:12.8px"> != NoAlias", so a and b are not noalias.</span></div><div><span style="font-size:12.8px">Maybe my version is too conservative.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Thanks</span></div><div><span style="font-size:12.8px">Hongbin</span></div><div><span style="font-size:12.8px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 16, 2017 at 11:55 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="">
<p><br>
</p>
<div class="m_4344742898765767199moz-cite-prefix">On 11/17/2017 01:49 AM, Hongbin Zheng
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Could you elaborate "<span style="font-size:12.8px">Note
that, without further analysis of the uses of the
potentially-noalias pointers, you can do this only ...</span>"?
<div>Why the uses, instead of the def, of pointer matter?</div>
</div>
</blockquote>
<br></span>
Both matter.<br>
<br>
static int foo(int *a, int *b) {<br>
return a[0] + b[1];<br>
}<br>
<br>
int bar(int *x) {<br>
return foo(x+1, x);<br>
}<br>
<br>
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.<span class="HOEnZb"><font color="#888888"><br>
<br>
-Hal<br>
</font></span><br>
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.<div><div class="h5"><br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div><br>
</div>
<div>Thanks</div>
<div>Hongbin</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Nov 16, 2017 at 11:21 PM, Hal
Finkel via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,
Alexandre,<br>
<br>
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").<br>
<br>
-Hal
<div class="m_4344742898765767199HOEnZb">
<div class="m_4344742898765767199h5"><br>
<br>
On 11/16/2017 10:11 AM, via llvm-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Is this what you are looking for?<br>
<br>
<a href="https://reviews.llvm.org/D4609" rel="noreferrer" target="_blank">https://reviews.llvm.org/D4609</a><br>
<br>
Best,<br>
<br>
Haicheng Wu<br>
<br>
On 2017-11-14 20:34, Alexandre Isoard via llvm-dev
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
Do we have a pass that propagate the noalias
annotation down to the<br>
callee when:<br>
- it is static<br>
- it is always called with non aliasing pointers<br>
?<br>
<br>
Or maybe that is incorrect?<br>
<br>
-- <br>
<br>
ALEXANDRE ISOARD<br>
</blockquote>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote>
<br>
</div>
</div>
<span class="m_4344742898765767199HOEnZb"><font color="#888888">
-- <br>
Hal Finkel<br>
Lead, Compiler Technology and Programming Languages<br>
Leadership Computing Facility<br>
Argonne National Laboratory</font></span>
<div class="m_4344742898765767199HOEnZb">
<div class="m_4344742898765767199h5"><br>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre class="m_4344742898765767199moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</div></div></div>
</blockquote></div><br></div>