summaryrefslogtreecommitdiff
path: root/test/Other/2003-02-19-LoopInfoNestingBug.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Other/2003-02-19-LoopInfoNestingBug.ll')
-rw-r--r--test/Other/2003-02-19-LoopInfoNestingBug.ll29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/Other/2003-02-19-LoopInfoNestingBug.ll b/test/Other/2003-02-19-LoopInfoNestingBug.ll
new file mode 100644
index 000000000000..d2945536ea79
--- /dev/null
+++ b/test/Other/2003-02-19-LoopInfoNestingBug.ll
@@ -0,0 +1,29 @@
+; LoopInfo is incorrectly calculating loop nesting! In this case it doesn't
+; figure out that loop "Inner" should be nested inside of leep "LoopHeader",
+; and instead nests it just inside loop "Top"
+;
+; RUN: llvm-as < %s | opt -analyze -loops | \
+; RUN: grep { Loop at depth 3 containing: %Inner<header><latch><exit>}
+;
+define void @test() {
+ br label %Top
+
+Top: ; preds = %Out, %0
+ br label %LoopHeader
+
+Next: ; preds = %LoopHeader
+ br i1 false, label %Inner, label %Out
+
+Inner: ; preds = %Inner, %Next
+ br i1 false, label %Inner, label %LoopHeader
+
+LoopHeader: ; preds = %Inner, %Top
+ br label %Next
+
+Out: ; preds = %Next
+ br i1 false, label %Top, label %Done
+
+Done: ; preds = %Out
+ ret void
+}
+