<div dir="ltr">Adding someone who might be interested in this patch...</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 7, 2014 at 8:59 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">Ping.<br>
<br>
 -Hal<br>
<div class="HOEnZb"><div class="h5"><br>
----- Original Message -----<br>
> From: <a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a><br>
> To: <a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a>, <a href="mailto:aschwaighofer@apple.com">aschwaighofer@apple.com</a>, <a href="mailto:dan433584@gmail.com">dan433584@gmail.com</a><br>
> Cc: <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> Sent: Saturday, June 28, 2014 7:21:16 AM<br>
> Subject: [PATCH] Improve BasicAA CS-CS queries<br>
><br>
> Hi aschwaighofer, sunfish,<br>
><br>
> BasicAA contains knowledge of certain intrinsics, such as memcpy and<br>
> memset, and uses that information to form more-accurate answers to<br>
> CallSite vs. Loc ModRef queries. Unfortunately, it does not use this<br>
> information when answering CallSite vs. CallSite queries.<br>
><br>
> Generically, when an intrinsic takes one or more pointers and the<br>
> intrinsic is marked only to read/write from its arguments, the<br>
> offset/size is unknown. As a result, the generic code that answers<br>
> CallSite vs. CallSite (and CallSite vs. Loc) queries in AA uses<br>
> UnknownSize when forming Locs from an intrinsic's arguments. While<br>
> BasicAA's CallSite vs. Loc override could use more-accurate size<br>
> information for some intrinsics, it did not do the same for CallSite<br>
> vs. CallSite queries.<br>
><br>
> This patch refactors the intrinsic-specific logic in BasicAA into a<br>
> generic AA query function: getArgLocation, which is overridden by<br>
> BasicAA to supply the intrinsic-specific knowledge, and used by AA's<br>
> generic implementation. This allows the intrinsic-specific knowledge<br>
> to be used by both CallSite vs. Loc and CallSite vs. CallSite<br>
> queries, and simplifies the BasicAA implementation.<br>
><br>
> Currently, only one function, Mac's memset_pattern16, is handled by<br>
> BasicAA (all the rest are intrinsics). As a side-effect of this<br>
> refactoring, BasicAA's getModRefBehavior override now also returns<br>
> OnlyAccessesArgumentPointees for this function (which is an<br>
> improvement).<br>
><br>
> <a href="http://reviews.llvm.org/D4342" target="_blank">http://reviews.llvm.org/D4342</a><br>
><br>
> Files:<br>
>   include/llvm/Analysis/AliasAnalysis.h<br>
>   lib/Analysis/AliasAnalysis.cpp<br>
>   lib/Analysis/BasicAliasAnalysis.cpp<br>
>   lib/Analysis/NoAliasAnalysis.cpp<br>
>   test/Analysis/BasicAA/cs-cs.ll<br>
><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</font></span></blockquote></div><br></div>