<div dir="ltr"><div><div>Richard, <br></div>Thank you. Building up a points-to algorithm is non-trivia. I will investigate on this thread.  thank you for the suggest!<br></div>--lx<br><br></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Wed, Oct 30, 2013 at 8:13 PM, Richard Sandiford <span dir="ltr"><<a href="mailto:rsandifo@linux.vnet.ibm.com" target="_blank">rsandifo@linux.vnet.ibm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Liu Xin <<a href="mailto:navy.xliu@gmail.com">navy.xliu@gmail.com</a>> writes:<br>
> Your decompose vector patch works perfect on my site.  Unfortunately, I<br>
> still get stupid code because llvm '-dse'  fails followed by<br>
> 'decompose-vector' .<br>
> I read the DSE code and it is definitely capable of eliminating unused<br>
> memory stores if its AA works.  I don't think basic AA works for me. I<br>
> found my program have complex memory accesses, such as bi-dimentional<br>
> arrays.<br>
><br>
> Sorry, I am not good at AA. In my concept, TBAA is just for C++.<br>
<br>
</div>Well, as I understand it, what's called TBAA in llvm is mostly an alias<br>
set hierarchy.  You can use the same infrastructure for any situation in<br>
which you know that two accesses can't overlap, even if that doesn't<br>
really map to "type"s in the language sense.  So it's more than just C++<br>
(or other languages, like LangRef.rst says).<br>
<br>
In my case, I'm using TBAA for IR generated by llvmpipe.  The information<br>
I'm adding isn't really related to the C types in llvmpipe (or gallium/mesa<br>
generally).  It just says that two accesses can't overlap because they<br>
refer to different arrays, or different rows/slices of the same array.<br>
<div class="im"><br>
> Do you mean that you can make use of TBAA to help DSE?<br>
<br>
</div>The main reason I wanted TBAA is to help scheduling.  None of the<br>
accesses are dead, but I want to able to interleave them to reduce<br>
register pressure.<br>
<div><div class="h5"><br>
> Why TBAA is total null for my program ? basicaa is even better than -tbaa.<br>
><br>
> liuxin@rd58:~/testbed$ opt  -tbaa -aa-eval -decompose-vectors -mem2reg -dse<br>
> test.bc -debug-pass=Structure -o test.opt.bc  -stats<br>
> Pass Arguments:  -targetlibinfo -no-aa -tbaa -aa-eval -decompose-vectors<br>
> -domtree -mem2reg -memdep -dse -preverify -verify<br>
> Target Library Information<br>
> No Alias Analysis (always returns 'may' alias)<br>
> Type-Based Alias Analysis<br>
>   ModulePass Manager<br>
>     FunctionPass Manager<br>
>       Exhaustive Alias Analysis Precision Evaluator<br>
>       Decompose vector operations into smaller pieces<br>
>       Dominator Tree Construction<br>
>       Promote Memory to Register<br>
>       Memory Dependence Analysis<br>
>       Dead Store Elimination<br>
>       Preliminary module verification<br>
>       Module Verifier<br>
>     Bitcode Writer<br>
> ===== Alias Analysis Evaluator Report =====<br>
>   1176 Total Alias Queries Performed<br>
>   0 no alias responses (0.0%)<br>
>   1176 may alias responses (100.0%)<br>
>   0 partial alias responses (0.0%)<br>
>   0 must alias responses (0.0%)<br>
>   Alias Analysis Evaluator Pointer Alias Summary: 0%/100%/0%/0%<br>
>   49 Total ModRef Queries Performed<br>
>   0 no mod/ref responses (0.0%)<br>
>   0 mod responses (0.0%)<br>
>   0 ref responses (0.0%)<br>
>   49 mod & ref responses (100.0%)<br>
>   Alias Analysis Evaluator Mod/Ref Summary: 0%/0%/0%/100%<br>
><br>
> Our c/c++ compiler uses steensguaard's points-to algorithm, so I turns to<br>
> find -steens-aa. It seems that llvm's poolalloc implements steens-aa,<br>
> right? does it still maintain?<br>
> I found I can not build rDSA using the latest llvm headers.<br>
<br>
</div></div>Sorry, I don't really know this part of llvm, so I'm not sure what to suggest.<br>
Hopefully someone else will comment.<br>
<br>
Thanks,<br>
Richard<br>
<br>
</blockquote></div><br></div>