mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 17:06:05 +00:00

It's not valid to simply branch to a landingpad block, so it needs to be removed. Also stop trying to scan forward to find a block that can be merged. The predecessor merge rules are more complex than this. This also would need to have considered landingpads. Just do the minimum to delete the block, and let the simplify-cfg reduction handle the branch chain cleanups.
67 lines
1.8 KiB
LLVM
67 lines
1.8 KiB
LLVM
; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefixes=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t
|
|
; RUN: FileCheck %s < %t
|
|
|
|
; CHECK-INTERESTINGNESS: store i32 0,
|
|
; CHECK-INTERESTINGNESS: store i32 1,
|
|
|
|
; CHECK: bb:
|
|
; CHECK-NEXT: br label %bb10
|
|
|
|
; CHECK: bb10:
|
|
; CHECK-NEXT: br label %bb11
|
|
|
|
; CHECK: bb11:
|
|
; CHECK-NEXT: br label %bb12
|
|
|
|
; CHECK: bb12:
|
|
; CHECK-NEXT: switch i32 %arg, label %bb13 [
|
|
; CHECK-NEXT: i32 1, label %bb13
|
|
; CHECK-NEXT: i32 0, label %bb18
|
|
; CHECK-NEXT: ]
|
|
|
|
; CHECK: bb13:
|
|
; CHECK-NEXT: br label %bb17
|
|
|
|
; CHECK: bb17:
|
|
; CHECK-NEXT: store i32 0
|
|
; CHECK-NEXT: br label %bb17
|
|
|
|
; CHECK: bb18:
|
|
; CHECK-NEXT: store i32 1
|
|
; CHECK-NEXT: br label %bb18
|
|
define amdgpu_kernel void @wibble(i32 %arg, i1 %arg1, i1 %arg2) {
|
|
bb:
|
|
br label %bb10
|
|
|
|
bb10: ; preds = %bb
|
|
br label %bb11
|
|
|
|
bb11: ; preds = %bb10
|
|
br label %bb12
|
|
|
|
bb12: ; preds = %bb11
|
|
switch i32 %arg, label %bb13 [
|
|
i32 1, label %bb13
|
|
i32 0, label %bb18
|
|
]
|
|
|
|
bb13: ; preds = %bb12, %bb12
|
|
br i1 %arg1, label %bb14, label %bb17
|
|
|
|
bb14: ; preds = %bb15, %bb13
|
|
%tmp = phi i32 [ 0, %bb15 ], [ 0, %bb13 ]
|
|
br label %bb15
|
|
|
|
bb15: ; preds = %bb14
|
|
%tmp16 = zext i32 %tmp to i64
|
|
br i1 %arg2, label %bb17, label %bb14
|
|
|
|
bb17: ; preds = %bb17, %bb15, %bb13
|
|
store i32 0, ptr addrspace(3) null
|
|
br label %bb17
|
|
|
|
bb18: ; preds = %bb18, %bb12
|
|
store i32 1, ptr addrspace(3) null
|
|
br label %bb18
|
|
}
|