summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-08-14 00:43:09 +0000
committerDan Gohman <gohman@apple.com>2010-08-14 00:43:09 +0000
commitc2f40066bbceb15e73e5c4df97d2d115f8a36e58 (patch)
tree93c041e5b2138282ddff505c6a1a0596c2d13071 /test
parente2c6d131d12c779a410740e0a90545def75e0f48 (diff)
downloadllvm-c2f40066bbceb15e73e5c4df97d2d115f8a36e58.tar.gz
llvm-c2f40066bbceb15e73e5c4df97d2d115f8a36e58.tar.bz2
llvm-c2f40066bbceb15e73e5c4df97d2d115f8a36e58.tar.xz
LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111061 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/LoopSimplify/indirectbr-backedge.ll35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Transforms/LoopSimplify/indirectbr-backedge.ll b/test/Transforms/LoopSimplify/indirectbr-backedge.ll
new file mode 100644
index 0000000000..ca6e47fcec
--- /dev/null
+++ b/test/Transforms/LoopSimplify/indirectbr-backedge.ll
@@ -0,0 +1,35 @@
+; RUN: opt -loopsimplify -S < %s | FileCheck %s
+
+; LoopSimplify shouldn't split loop backedges that use indirectbr.
+
+; CHECK: bb1: ; preds = %bb5, %bb
+; CHECK-NEXT: indirectbr
+
+; CHECK: bb5: ; preds = %bb1
+; CHECK-NEXT: br label %bb1{{$}}
+
+define void @foo(i8* %p) nounwind {
+bb:
+ br label %bb1
+
+bb1: ; preds = %bb5, %bb1, %bb
+ indirectbr i8* %p, [label %bb6, label %bb7, label %bb1, label %bb2, label %bb3, label %bb5, label %bb4]
+
+bb2: ; preds = %bb1
+ ret void
+
+bb3: ; preds = %bb1
+ ret void
+
+bb4: ; preds = %bb1
+ ret void
+
+bb5: ; preds = %bb1
+ br label %bb1
+
+bb6: ; preds = %bb1
+ ret void
+
+bb7: ; preds = %bb1
+ ret void
+}