[PATCH] D17442: [LPM] Remove the last worrisome split in the primary loop pass pipeline, allowing LICM and friends to always run over the outer loop after unrolling has a chance to remove the inner loop.

Michael Zolotukhin via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 19 16:53:56 PST 2016


mzolotukhin added a comment.

The testing just finished, i got a huge number of stability failures though. They're caused by two assertions:

1. Assertion failed: (hasDedicatedExits() && "getUniqueExitBlocks assumes the loop has canonical form exits!"), function getUniqueExitBlocks, file /Users/buildslave/devel/llvm.git/lib/Analysis/LoopInfo.cpp, line 333.

Reproducer:

  ; RUN: opt -loop-instsimplify < %s
  define void @main() {
  entry:
    br label %L1
  L1:
    br label %L2
  L2:
    indirectbr i8* undef, [label %L1, label %L2]
  }

The issue here is probably that we're not cleaning up enough.

2. Assertion failed: (InnerAST && "Where is my AST?"), function collectAliasInfoFromSubLoops, file /Users/buildslave/devel/llvm.git/lib/Transforms/Scalar/LICM.cpp, line 1048.

My bugpoint-fu failed me here, so I don't have a small testcase. But if you run testsuite, you should definitely see it.

There are several gains and regressions in both compile and execution times, but I suggest remeasuring it when the assertion failures are fixed.


http://reviews.llvm.org/D17442





More information about the llvm-commits mailing list