xref: /llvm-project/llvm/test/tools/llvm-reduce/remove-bbs-sequence.ll (revision f02bc70c7d53e5898abddc83f249ef28b8b4b9b6)
1*f02bc70cSMatt Arsenault; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks,simplify-cfg --test %python --test-arg %p/remove-bbs-sequence.py %s -o %t
2023f24d8SMatt Arsenault; RUN: FileCheck %s < %t
3bb8e0232SMarkus Lavin
4bb8e0232SMarkus Lavin; The interestingness test is that the CFG contains a loop. Verify that the
5bb8e0232SMarkus Lavin; unnecessary bb2 and bb3 are removed while still maintaining a loop.
6bb8e0232SMarkus Lavin
7bb8e0232SMarkus Lavindefine void @main() {
8bb8e0232SMarkus Lavin  bb0:
9bb8e0232SMarkus Lavin    br label %bb1
10bb8e0232SMarkus Lavin  bb1:
11bb8e0232SMarkus Lavin    br label %bb2
12bb8e0232SMarkus Lavin  bb2:
13bb8e0232SMarkus Lavin    br label %bb3
14bb8e0232SMarkus Lavin  bb3:
15bb8e0232SMarkus Lavin    %phi = phi i32 [ undef, %bb2 ]
16bb8e0232SMarkus Lavin    br label %bb4
17bb8e0232SMarkus Lavin  bb4:
18bb8e0232SMarkus Lavin    br label %bb1
19bb8e0232SMarkus Lavin}
20bb8e0232SMarkus Lavin
21bb8e0232SMarkus Lavin; CHECK:define void @main() {
22bb8e0232SMarkus Lavin; CHECK-NEXT: bb0:
23bb8e0232SMarkus Lavin; CHECK-NEXT:   br label %bb4
24bb8e0232SMarkus Lavin; CHECK-EMPTY:
25bb8e0232SMarkus Lavin; CHECK-NEXT: bb4:
26*f02bc70cSMatt Arsenault; CHECK-NEXT: %phi = phi i32 [ undef, %bb0 ], [ undef, %bb4 ]
27*f02bc70cSMatt Arsenault; CHECK-NEXT: br label %bb4
28bb8e0232SMarkus Lavin; CHECK-NEXT:}
29