[PATCH] [Polly][PoC] First (smarter) step to remove IndependentBlocks & CodeGeneration

Johannes Doerfert doerfert at cs.uni-saarland.de
Sun Oct 12 23:03:22 PDT 2014


Hi grosser, sebpop, dpeixott, simbuerg,

  This is a proof of concept that we can model the SCoP and the
  dependences as accurate as before even witout IndependentBlocks
  and CodePreparation. It should help to start a discussion about
  Polly as analyzer and make it more applicable at some point.

  Changes include:
    - Remove the CodeGeneration pass and tests
    - Remove the IndependentBlocks pass and tests
    - Removed some tests only testing the passes above (not all though)
    - Modified some tests that were failing without good reason
    - Allowed PHI nodes in ScopDetection
    - Changed the SCoP creation to allow the proper handling of PHIs
    - Modelt PHI nodes precicly in the SCoP
    - Enabled -polly-codegen-scev and disabled "DisableIntraScopScalarToArray"
    - A test case for non synthesizable PHI nodes
      (test/ScopInfo/phi_scalar_simple_1.ll)

  Features include:
    - Only PHI nodes needed are represented in the SCoP, PHI chains
      can therefore be reduced if they do not change the value. This
      should also "look through" trivial PHIs, similar to the old code
      prepare pass.

  Missing changes:
    - The code generation will not be able to handle PHI nodes properly

  Thoughts of any kind are welcome.

http://reviews.llvm.org/D5749

Files:
  include/polly/LinkAllPasses.h
  include/polly/ScopDetection.h
  include/polly/ScopInfo.h
  include/polly/Support/ScopHelper.h
  include/polly/TempScopInfo.h
  lib/Analysis/ScopDetection.cpp
  lib/Analysis/ScopInfo.cpp
  lib/Analysis/TempScopInfo.cpp
  lib/CMakeLists.txt
  lib/CodeGen/BlockGenerators.cpp
  lib/CodeGen/CodeGeneration.cpp
  lib/CodeGen/IslCodeGeneration.cpp
  lib/Makefile
  lib/Support/RegisterPasses.cpp
  lib/Support/ScopHelper.cpp
  lib/Transform/Canonicalization.cpp
  lib/Transform/CodePreparation.cpp
  lib/Transform/IndependentBlocks.cpp
  test/Cloog/CodeGen/constant_condition.ll
  test/CodePreparation/if_condition.ll
  test/CodePreparation/multiple_loops_trivial_phis.ll
  test/CodePreparation/single_loop_trivial_phi.ll
  test/IndependentBlocks/inter_bb_scalar_dep.ll
  test/IndependentBlocks/intra_and_inter_bb_scalar_dep.ll
  test/IndependentBlocks/intra_bb_scalar_dep.ll
  test/IndependentBlocks/phi_outside_scop.ll
  test/IndependentBlocks/scalar_to_array.ll
  test/IndependentBlocks/scev-invalidated.ll
  test/Isl/Ast/dependence_distance_parametric_expr.ll
  test/Isl/CodeGen/constant_condition.ll
  test/Isl/CodeGen/loop_with_condition_nested.ll
  test/ScopDetect/simple_loop_two_phi_nodes.ll
  test/ScopInfo/bug_2011_1_5.ll
  test/ScopInfo/loop_carry.ll
  test/ScopInfo/phi_not_grouped_at_top.ll
  test/ScopInfo/phi_scalar_simple_1.ll
  test/ScopInfo/phi_with_invoke_edge.ll
  test/ScopInfo/scalar.ll
  test/TempScop/inter_bb_scalar_dep.ll
  test/TempScop/intra_and_inter_bb_scalar_dep.ll
  test/TempScop/intra_bb_scalar_dep.ll
  test/TempScop/scalar_to_array.ll
  test/TempScop/tempscop-printing.ll
  www/documentation/passes.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5749.14783.patch
Type: text/x-patch
Size: 102224 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141013/ffdbfcbb/attachment.bin>


More information about the llvm-commits mailing list