xref: /llvm-project/llvm/test/Transforms/Inline/infinite-loop-two-predecessors.ll (revision 8ee638fd175245eff88d77e1607e478db237dd41)
1; RUN: opt -S -o - %s -passes=inline | FileCheck %s
2
3define void @f1(i1 %arg) {
4bb.0:
5  br i1 false, label %bb.2, label %bb.1
6
7bb.1:                                             ; preds = %bb.0
8  br label %bb.2
9
10bb.2:                                             ; preds = %bb.0, %bb.1
11  %tmp0 = phi i1 [ true, %bb.1 ], [ false, %bb.0 ]
12  br i1 %tmp0, label %bb.4, label %bb.3
13
14bb.3:                                             ; preds = %bb.3, %bb.3
15  br i1 %arg, label %bb.3, label %bb.3
16
17bb.4:                                             ; preds = %bb.2
18  ret void
19}
20
21define void @f2() {
22bb.0:
23  call void @f1(i1 1)
24  ret void
25}
26
27; f1 should be inlined into f2 and simplified/collapsed to nothing.
28
29; CHECK-LABEL: define void @f2() {
30; CHECK-NEXT:  bb.0:
31; CHECK-NEXT:    ret void
32; CHECK-NEXT:  }
33