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

Jia Chen via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 30 14:58:05 PDT 2016


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21910.62426.patch
Type: text/x-patch
Size: 62607 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160630/95514c77/attachment-0001.bin>


More information about the llvm-commits mailing list