[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Examples / IRTransforms / SimplifyCFG / tut-simplify-cfg2-dead-block-order.ll
blobd53f5133b2bf36eeb97581c481d80cd73b9cee7d
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
6 define i32 @remove_dead_blocks() {
7 ; CHECK-LABEL: @remove_dead_blocks(
8 ; CHECK-NEXT:  entry:
9 ; CHECK-NEXT:    ret i32 1
11 entry:
12   ret i32 1
14 bb.1:
15   ret i32 2
17 bb.2:
18   ret i32 3
21 define i32 @simp1() {
22 ; CHECK-LABEL: @simp1(
23 ; CHECK-NEXT:  entry:
24 ; CHECK-NEXT:    ret i32 1
25 ; CHECK:       bb.1:
26 ; CHECK-NEXT:    ret i32 2
28 entry:
29   ret i32 1
31 bb.1:
32   ret i32 2
34 bb.2:
35   br i1 undef, label %bb.1, label %bb.3
37 bb.3:
38   ret i32 3
41 define 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
48 entry:
49   br label %bb.2
51 bb.1:
52   br label %bb.2
54 bb.2:
55   %rv = phi i32 [ 1, %entry ], [ 2, %bb.1 ]
56   ret i32 %rv
59 define 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
64 entry:
65   ret i32 1
67 bb.2:
68   ret i32 %res
70 bb.1:
71   %res = add i32 %a, 10
72   br label %bb.2
75 define 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
86 entry:
87   ret i32 1
89 bb.2:
90   %res2 = add i32 %res, 10
91   %res3 = mul i32 %res2, %res
92   ret i32 %res3
94 bb.3:
95   br label %bb.4
97 bb.4:
98   ret i32 %res
100 bb.1:
101   %res = add i32 %a, 10
102   br i1 %cond, label %bb.2, label %bb.3
103   br label %bb.2