[PATCH] D21910: [CFLAA] Split CFL-AA into one unification-based pass and one inclusion-based pass

Daniel Berlin via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 30 15:13:35 PDT 2016


Given you basically want to reuse the graph, you should refactor that out
too.

The only difference between the steens and inclusion based ones should be
how they walk the graph and what preprocessing they do, if any.


(This also lets you layer them without having to rebuild the entire graph.


As we discussed offline, in a perfect world, you want to do something like
quickly ask the steens if they are no-alias. If it says "no-alias", you
return that, otherwise, you do inclusion based walking)


On Thu, Jun 30, 2016 at 2:58 PM, Jia Chen via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> grievejia created this revision.
> grievejia added reviewers: george.burgess.iv, hfinkel.
> grievejia added a subscriber: llvm-commits.
> Herald added a subscriber: mehdi_amini.
>
> This patch renames the existing CFLAliasAnalysis pass to
> CFLSteensAliasAnalysis, and introduces a new pass CFLAndersAliasAnalysis.
> The pass name "cfl-aa" gets replaced by "cfl-steens-aa" and
> "cfl-anders-aa". The "use-cfl-aa" and "use-cfl-aa-in-codegen" flags gets
> changed from a boolean flags to enum flags (none/steens/anders).
>
> Precision enhancements are getting more and more difficult to add to the
> existing CFLAliasAnalysis pass due to its unification-based nature. Since
> extending CFL-AA with features like field sensitivity and inclusion-based
> semantics won't share too much of the existing codes anyway, it's much
> cleaner to start anew (and perhaps factor out certain parts of the original
> codes that can be shared by all CFL-based alias analysis) than to keep
> increasing the code complexity in CFLAliasAnalysis.cpp.
>
> The newly added pass contains only a stub implementation of alias()
> currently. Its body will be gradually filled out in subsequent patches.
>
> http://reviews.llvm.org/D21910
>
> Files:
>   include/llvm/Analysis/CFLAliasAnalysis.h
>   include/llvm/Analysis/CFLAndersAliasAnalysis.h
>   include/llvm/Analysis/CFLSteensAliasAnalysis.h
>   include/llvm/InitializePasses.h
>   include/llvm/LinkAllPasses.h
>   lib/Analysis/AliasAnalysis.cpp
>   lib/Analysis/Analysis.cpp
>   lib/Analysis/CFLAliasAnalysis.cpp
>   lib/Analysis/CFLAndersAliasAnalysis.cpp
>   lib/Analysis/CFLSteensAliasAnalysis.cpp
>   lib/Analysis/CMakeLists.txt
>   lib/CodeGen/TargetPassConfig.cpp
>   lib/Passes/PassBuilder.cpp
>   lib/Passes/PassRegistry.def
>   lib/Transforms/IPO/PassManagerBuilder.cpp
>   test/Analysis/CFLAliasAnalysis/Steensgaard/arguments-globals.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/arguments.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/asm-global-bugfix.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/attr-escape.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/basic-interproc.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/branch-alias.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/const-expr-gep.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/constant-over-index.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/empty.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/full-store-partial-alias.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/gep-index-no-alias.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/gep-signed-arithmetic.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-arg-deref-escape.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-arg-escape.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll
>
> test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-deref-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-deref-arg.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-escape.ll
>
> test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-ref-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-ref-arg.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-unknown.ll
>
> test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-store-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-store-arg-unknown.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-store-arg.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/malloc-and-free.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/multilevel-combine.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/multilevel.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/must-and-partial.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/opaque-call-alias.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/phi-and-select.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/pr27213.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/simple.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/stratified-attrs-indexing.ll
>   test/Analysis/CFLAliasAnalysis/Steensgaard/va.ll
>   test/Analysis/CFLAliasAnalysis/arguments-globals.ll
>   test/Analysis/CFLAliasAnalysis/arguments.ll
>   test/Analysis/CFLAliasAnalysis/asm-global-bugfix.ll
>   test/Analysis/CFLAliasAnalysis/attr-escape.ll
>   test/Analysis/CFLAliasAnalysis/basic-interproc.ll
>   test/Analysis/CFLAliasAnalysis/branch-alias.ll
>   test/Analysis/CFLAliasAnalysis/const-expr-gep.ll
>   test/Analysis/CFLAliasAnalysis/constant-over-index.ll
>   test/Analysis/CFLAliasAnalysis/empty.ll
>   test/Analysis/CFLAliasAnalysis/full-store-partial-alias.ll
>   test/Analysis/CFLAliasAnalysis/gep-index-no-alias.ll
>   test/Analysis/CFLAliasAnalysis/gep-signed-arithmetic.ll
>   test/Analysis/CFLAliasAnalysis/interproc-arg-deref-escape.ll
>   test/Analysis/CFLAliasAnalysis/interproc-arg-escape.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-arg.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-deref-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-deref-arg.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-escape.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-ref-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-ref-arg.ll
>   test/Analysis/CFLAliasAnalysis/interproc-ret-unknown.ll
>   test/Analysis/CFLAliasAnalysis/interproc-store-arg-multilevel.ll
>   test/Analysis/CFLAliasAnalysis/interproc-store-arg-unknown.ll
>   test/Analysis/CFLAliasAnalysis/interproc-store-arg.ll
>   test/Analysis/CFLAliasAnalysis/malloc-and-free.ll
>   test/Analysis/CFLAliasAnalysis/multilevel-combine.ll
>   test/Analysis/CFLAliasAnalysis/multilevel.ll
>   test/Analysis/CFLAliasAnalysis/must-and-partial.ll
>   test/Analysis/CFLAliasAnalysis/opaque-call-alias.ll
>   test/Analysis/CFLAliasAnalysis/phi-and-select.ll
>   test/Analysis/CFLAliasAnalysis/pr27213.ll
>   test/Analysis/CFLAliasAnalysis/simple.ll
>   test/Analysis/CFLAliasAnalysis/stratified-attrs-indexing.ll
>   test/Analysis/CFLAliasAnalysis/va.ll
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160630/79b4ae04/attachment.html>


More information about the llvm-commits mailing list