summaryrefslogtreecommitdiff
path: root/test/Transforms/Inline/infinite-loop-two-predecessors.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/Inline/infinite-loop-two-predecessors.ll')
-rw-r--r--test/Transforms/Inline/infinite-loop-two-predecessors.ll32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/Transforms/Inline/infinite-loop-two-predecessors.ll b/test/Transforms/Inline/infinite-loop-two-predecessors.ll
new file mode 100644
index 00000000000..aa07315eb08
--- /dev/null
+++ b/test/Transforms/Inline/infinite-loop-two-predecessors.ll
@@ -0,0 +1,32 @@
+; RUN: opt -S -o - %s -inline | FileCheck %s
+
+define void @f1() {
+bb.0:
+ br i1 false, label %bb.2, label %bb.1
+
+bb.1: ; preds = %bb.0
+ br label %bb.2
+
+bb.2: ; preds = %bb.0, %bb.1
+ %tmp0 = phi i1 [ true, %bb.1 ], [ false, %bb.0 ]
+ br i1 %tmp0, label %bb.4, label %bb.3
+
+bb.3: ; preds = %bb.3, %bb.3
+ br i1 undef, label %bb.3, label %bb.3
+
+bb.4: ; preds = %bb.2
+ ret void
+}
+
+define void @f2() {
+bb.0:
+ call void @f1()
+ ret void
+}
+
+; f1 should be inlined into f2 and simplified/collapsed to nothing.
+
+; CHECK-LABEL: define void @f2() {
+; CHECK-NEXT: bb.0:
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }