[LLVMdev] how to let memory dependency analysis use globalsmodref

Nick Lewycky nicholas at mxc.ca
Wed Aug 1 02:01:33 PDT 2012


Jin Guoliang wrote:
> Hi there,
>
> I am doing:
>
> opt -print-memdeps ./test.bc -analyze -globalsmodref-aa
>
> by adding globalsmodref-aa, I am hoping that globalsmodref alias
> analysis will be used. However, it does not turn out to be so. I found
> this out by adding some "errs() << " into the source code for that alias
> analysis.

opt is sensitive to the order of its arguments. Use 
-debug-pass=Structure to see how the passes are being scheduled"

$ opt -print-memdeps test.bc -analyze -globalsmodref-aa 
-debug-pass=Structure
Pass Arguments:  -targetlibinfo -no-aa -memdep -print-memdeps -basiccg 
-globalsmodref-aa -preverify -domtree -verify
Target Library Information
No Alias Analysis (always returns 'may' alias)
   ModulePass Manager
     FunctionPass Manager
       Memory Dependence Analysis
       Print MemDeps of function
       FunctionPass Printer: Print MemDeps of function
     Basic CallGraph Construction
     Simple mod/ref analysis for globals
     ModulePass Printer: Simple mod/ref analysis for globals
     FunctionPass Manager
       Preliminary module verification
       Dominator Tree Construction
       Module Verifier

As you see, "print memdeps of function" happened before "simple mod/ref 
analysis for globals" was ever started. 'opt -analyze -globalsmodref-aa 
-print-memdeps test.bc' should do what you want:

$ opt -globalsmodref-aa -print-memdeps test.bc -analyze 
-debug-pass=Structure
Pass Arguments:  -targetlibinfo -no-aa -basiccg -globalsmodref-aa 
-memdep -print-memdeps -preverify -domtree -verify
Target Library Information
No Alias Analysis (always returns 'may' alias)
   ModulePass Manager
     Basic CallGraph Construction
     Simple mod/ref analysis for globals
     ModulePass Printer: Simple mod/ref analysis for globals
     FunctionPass Manager
       Memory Dependence Analysis
       Print MemDeps of function
       FunctionPass Printer: Print MemDeps of function
       Preliminary module verification
       Dominator Tree Construction
       Module Verifier

though you may want to combine -globalsmodref-aa with -basicaa.

Nick

> So my question is what should I do to let memory dependency analysis use
> globalsmodref alias analysis.
>
> I have tried other alias analysis and found out that if basic-aa and
> tbaa can be utilized, but not -libcall-aa -globalsmodref-aa.
>
> I also found out that -libcall-aa -globalsmodref-aa has member function
> runOnFunction and runOnModule respectively, but basic-aa and tbaa do not.
>
> Again, my question is what should I do to let memory dependency analysis
> use globalsmodref alias analysis.
>
> Thanks,
> Guoliang
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list