; 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 }