diff options
Diffstat (limited to 'llvm/test/Transforms/LICM/2014-09-10-doFinalizationAssert.ll')
-rw-r--r-- | llvm/test/Transforms/LICM/2014-09-10-doFinalizationAssert.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LICM/2014-09-10-doFinalizationAssert.ll b/llvm/test/Transforms/LICM/2014-09-10-doFinalizationAssert.ll new file mode 100644 index 00000000000..17ae716dd47 --- /dev/null +++ b/llvm/test/Transforms/LICM/2014-09-10-doFinalizationAssert.ll @@ -0,0 +1,30 @@ +; RUN: opt < %s -scalar-evolution -licm -loop-unroll -disable-output +; Test triggered an assertion in doFinalization() because loop unroll was deleting +; the inner loop which caused the loop to not get removed from the +; LoopToAliasSetMap. +; Test case taken from test/Transforms/LoopUnroll/unloop.ll. + +declare i1 @check() nounwind +define void @skiplevelexit() nounwind { +entry: + br label %outer + +outer: + br label %inner + +inner: + %iv = phi i32 [ 0, %outer ], [ %inc, %tail ] + %inc = add i32 %iv, 1 + call zeroext i1 @check() + br i1 true, label %outer.backedge, label %tail + +tail: + br i1 false, label %inner, label %exit + +outer.backedge: + br label %outer + +exit: + ret void +} + |