summaryrefslogtreecommitdiff
path: root/test/Integer/cfgstructures_bt.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Integer/cfgstructures_bt.ll')
-rw-r--r--test/Integer/cfgstructures_bt.ll56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/Integer/cfgstructures_bt.ll b/test/Integer/cfgstructures_bt.ll
new file mode 100644
index 0000000000000..09aec1fed2195
--- /dev/null
+++ b/test/Integer/cfgstructures_bt.ll
@@ -0,0 +1,56 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+;; This is an irreducible flow graph
+
+
+define void @"irreducible"(i1 %cond)
+begin
+ br i1 %cond, label %X, label %Y
+
+X:
+ br label %Y
+Y:
+ br label %X
+end
+
+;; This is a pair of loops that share the same header
+
+define void @"sharedheader"(i1 %cond)
+begin
+ br label %A
+A:
+ br i1 %cond, label %X, label %Y
+
+X:
+ br label %A
+Y:
+ br label %A
+end
+
+;; This is a simple nested loop
+define void @"nested"(i1 %cond1, i1 %cond2, i1 %cond3)
+begin
+ br label %Loop1
+
+Loop1:
+ br label %Loop2
+
+Loop2:
+ br label %Loop3
+
+Loop3:
+ br i1 %cond3, label %Loop3, label %L3Exit
+
+L3Exit:
+ br i1 %cond2, label %Loop2, label %L2Exit
+
+L2Exit:
+ br i1 %cond1, label %Loop1, label %L1Exit
+
+L1Exit:
+ ret void
+end
+