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

A future change will skip the reduction for functions with unreachable blocks. Also stop using the hard to follow python based interestingness check in favor of FileCheck.
37 lines
1.2 KiB
LLVM
37 lines
1.2 KiB
LLVM
; Test that llvm-reduce can remove uninteresting Basic Blocks, and remove them from instructions (i.e. SwitchInst, BranchInst and IndirectBrInst)
|
|
; Note: if an uninteresting BB is the default case for a switch, the instruction is removed altogether (since the default case cannot be replaced)
|
|
;
|
|
; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t
|
|
; RUN: FileCheck -implicit-check-not=uninteresting %s < %t
|
|
|
|
; CHECK-INTERESTINGNESS: store i32 0
|
|
; CHECK-INTERESTINGNESS: store i32 1
|
|
; CHECK-INTERESTINGNESS: store i32 2
|
|
|
|
define void @main() {
|
|
interesting:
|
|
store i32 0, ptr null
|
|
; CHECK-NOT: switch i32 0, label %uninteresting
|
|
switch i32 0, label %uninteresting [
|
|
i32 1, label %interesting2
|
|
]
|
|
|
|
uninteresting:
|
|
ret void
|
|
|
|
interesting2:
|
|
store i32 1, ptr null
|
|
; CHECK: switch i32 1, label %interesting3
|
|
switch i32 1, label %interesting3 [
|
|
; CHECK-NOT: i32 0, label %uninteresting
|
|
i32 0, label %uninteresting
|
|
; CHECK: i32 1, label %interesting3
|
|
i32 1, label %interesting3
|
|
]
|
|
|
|
interesting3:
|
|
store i32 2, ptr null
|
|
; CHECK: br label %interesting2
|
|
br i1 true, label %interesting2, label %uninteresting
|
|
}
|