xref: /llvm-project/llvm/test/tools/llvm-reduce/reduce-bb-unreachable-does-not-dominate-error1.ll (revision f02bc70c7d53e5898abddc83f249ef28b8b4b9b6)
1; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=unreachable-basic-blocks,basic-blocks --test FileCheck --test-arg --check-prefixes=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t
2; RUN: FileCheck %s < %t
3
4
5; CHECK-INTERESTINGNESS: @func(
6
7; CHECK-INTERESTINGNESS: store
8; CHECK-INTERESTINGNESS: store
9; CHECK-INTERESTINGNESS: store
10
11
12; CHECK: bb:
13; CHECK-NEXT: br i1 %arg1, label %bb3, label %bb7
14
15; CHECK: bb3: ; preds = %bb
16; CHECK-NEXT: br i1 %arg2, label %bb4, label %bb7
17
18; CHECK: bb4: ; preds = %bb3
19; CHECK-NEXT: store i32 0, ptr addrspace(1) null, align 4
20; CHECK-NEXT: ret void
21
22; CHECK: bb7: ; preds = %bb3, %bb
23; CHECK-NEXT: %i = phi i1 [ false, %bb ], [ true, %bb3 ]
24; CHECK-NEXT: store i32 1, ptr addrspace(1) null, align 4
25; CHECK-NEXT: br label %bb10
26
27; CHECK: bb10: ; preds = %bb7
28; CHECK-NEXT: store i32 2, ptr addrspace(1) null, align 4
29; CHECK-NEXT: unreachable
30define amdgpu_kernel void @func(i1 %arg, i1 %arg1, i1 %arg2) {
31bb:
32  br i1 %arg1, label %bb3, label %bb7
33
34bb3:                                              ; preds = %bb
35  br i1 %arg2, label %bb4, label %bb7
36
37bb4:                                              ; preds = %bb3
38  store i32 0, ptr addrspace(1) null
39  br label %bb5
40
41bb5:                                              ; preds = %bb4
42  unreachable
43
44bb6:                                              ; No predecessors!
45  unreachable
46
47bb7:                                              ; preds = %bb3, %bb
48  %i = phi i1 [ false, %bb ], [ true, %bb3 ]
49  store i32 1, ptr addrspace(1) null
50  br i1 %arg, label %bb10, label %bb8
51
52bb8:                                              ; preds = %bb7
53  br i1 %i, label %bb9, label %bb9
54
55bb9:                                              ; preds = %bb8, %bb8
56  unreachable
57
58bb10:                                             ; preds = %bb7
59  store i32 2, ptr addrspace(1) null
60  unreachable
61}
62