[LLVMdev] TBAA fail on optimization, why?

Jun Koi junkoi2004 at gmail.com
Thu Sep 27 01:04:46 PDT 2012


On Thu, Sep 27, 2012 at 4:01 PM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Jun,
>
>
>> ok, below is my code. i run this through "opt" with option: "-basicaa
>> -mem2reg -tbaa"
>> however, the resulted bitcode file is still the same; no optimization is
>> done.
>
>
> that's because you didn't specify any optimization that uses alias analysis!
> LLVM makes a distinction between analyses and transforms.  Analyses, like
> tbaa,
> are passes which look at your IR but don't modify it: instead they deduce
> things about it (eg which memory accesses alias each other) and provide
> that information to other passes.  Transforms are passes that modify the IR,
> i.e. these are the passes that do the actual optimizing.  Consider the -dse
> (dead store elimination pass).  This is a transform pass, however it needs
> to know which memory accesses alias each other.  It doesn't compute this
> itself,
> instead it requests this information from the alias analysis subsystem,
> which
> queries any alias analysis passes that may have run.  By specifying -tbaa
> you
> have only done the analysis part, not the transform part.
>

thanks, now i got it.

>> meanwhile, the last "store" instruction is easily eliminated with "-O3"
>> option.

> Try -tbaa -basicaa mem2reg -dse

this indeed works, thanks!!!

best,
Jun



More information about the llvm-dev mailing list