[PATCH] D12499: [WIP] Replace ScalarEvolution based domain generation

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 31 12:41:28 PDT 2015


jdoerfert created this revision.
jdoerfert added reviewers: grosser, mssimpso, Meinersbur.
jdoerfert added a subscriber: Polly.
Herald added a subscriber: sanjoy.

  This patch replaces the second legacy part of the domain generation, namely
  the ScalarEvolution part that was used to obtain loop bounds. Alternatively,
  we iterate over the loops in the region and propagate the back edge condition
  to the header blocks. Afterwards we propagate the new information once
  through the whole region.

  Why [WIP]:
    - 4 Unit tests are not yet adjusted, I think 3 have just different formed
      output but for one this patch might be broken (some non-affine region
      stuff)
    - 9 LNT compile time failures because we allow loops with pointer bounds
      that cause some crash in the IslExprBuilder:
        llvm_unreachable( "Only additive binary operations are allowed on
        pointer types.");
    - It is not yet 100% clear if and why one pass is enough to propagate all
      loop-carried information.

  Benefits:
    - This patch already identified a couple of broken unit tests we had for
      years.
    - We allow more loops already (numbers will follow) and the step to
      multiple exit and multiple back edges is minimal.
    - It performs well (numbers will follow), at least that's what I think.
    - It allows to model the overflow checks properly as we actually visit
      every block in the SCoP and know where which condition is evaluated.

  Drawbacks:
    - See "Why [WIP]"
    - Big change

http://reviews.llvm.org/D12499

Files:
  include/polly/ScopInfo.h
  lib/Analysis/ScopInfo.cpp
  test/Isl/CodeGen/OpenMP/loop-body-references-outer-values-3.ll
  test/Isl/CodeGen/OpenMP/reference-preceeding-loop.ll
  test/Isl/CodeGen/two-scops-in-row.ll
  test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
  test/ScopInfo/isl_trip_count_01.ll
  test/ScopInfo/isl_trip_count_02.ll
  test/ScopInfo/loop_affine_bound_0.ll
  test/ScopInfo/loop_affine_bound_1.ll
  test/ScopInfo/loop_affine_bound_2.ll
  test/ScopInfo/pointer-type-expressions.ll
  test/ScopInfo/redundant_parameter_constraint.ll
  test/ScopInfo/unsigned-condition.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12499.33613.patch
Type: text/x-patch
Size: 31164 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150831/384d4dab/attachment.bin>


More information about the llvm-commits mailing list