xref: /llvm-project/llvm/test/Examples/IRTransforms/SimplifyCFG/tut-simplify-cfg2-dead-block-order.ll (revision 1469d82e1cb3edc939d6b93089046edfef0cf36c)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v1 -S < %s | FileCheck %s
3; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v2 -S < %s | FileCheck %s
4; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v3 -S < %s | FileCheck %s
5
6define i32 @remove_dead_blocks() {
7; CHECK-LABEL: @remove_dead_blocks(
8; CHECK-NEXT:  entry:
9; CHECK-NEXT:    ret i32 1
10;
11entry:
12  ret i32 1
13
14bb.1:
15  ret i32 2
16
17bb.2:
18  ret i32 3
19}
20
21define i32 @simp1(i1 %arg) {
22; CHECK-LABEL: @simp1(
23; CHECK-NEXT:  entry:
24; CHECK-NEXT:    ret i32 1
25; CHECK:       bb.1:
26; CHECK-NEXT:    ret i32 2
27;
28entry:
29  ret i32 1
30
31bb.1:
32  ret i32 2
33
34bb.2:
35  br i1 %arg, label %bb.1, label %bb.3
36
37bb.3:
38  ret i32 3
39}
40
41define i32 @remove_dead_block_with_phi() {
42; CHECK-LABEL: @remove_dead_block_with_phi(
43; CHECK-NEXT:  entry:
44; CHECK-NEXT:    br label [[BB_2:%.*]]
45; CHECK:       bb.2:
46; CHECK-NEXT:    ret i32 1
47;
48entry:
49  br label %bb.2
50
51bb.1:
52  br label %bb.2
53
54bb.2:
55  %rv = phi i32 [ 1, %entry ], [ 2, %bb.1 ]
56  ret i32 %rv
57}
58
59define i32 @remove_dead_blocks_remaining_uses(i32 %a) {
60; CHECK-LABEL: @remove_dead_blocks_remaining_uses(
61; CHECK-NEXT:  entry:
62; CHECK-NEXT:    ret i32 1
63;
64entry:
65  ret i32 1
66
67bb.2:
68  ret i32 %res
69
70bb.1:
71  %res = add i32 %a, 10
72  br label %bb.2
73}
74
75define i32 @remove_dead_blocks_remaining_uses2(i32 %a, i1 %cond) {
76; CHECK-LABEL: @remove_dead_blocks_remaining_uses2(
77; CHECK-NEXT:  entry:
78; CHECK-NEXT:    ret i32 1
79; CHECK:       bb.2:
80; CHECK-NEXT:    [[RES2:%.*]] = add i32 poison, 10
81; CHECK-NEXT:    [[RES3:%.*]] = mul i32 [[RES2]], poison
82; CHECK-NEXT:    ret i32 [[RES3]]
83; CHECK:       bb.3:
84; CHECK-NEXT:    ret i32 poison
85;
86entry:
87  ret i32 1
88
89bb.2:
90  %res2 = add i32 %res, 10
91  %res3 = mul i32 %res2, %res
92  ret i32 %res3
93
94bb.3:
95  br label %bb.4
96
97bb.4:
98  ret i32 %res
99
100bb.1:
101  %res = add i32 %a, 10
102  br i1 %cond, label %bb.2, label %bb.3
103  br label %bb.2
104}
105