; 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 %s < %t ; Make sure an invalid reduction isn't tried when deleting %bb5, ; causing the or in %bb6 to use its own output value. ; CHECK-INTERESTINGNESS: store i32 0 ; CHECK-INTERESTINGNESS: store i32 1 ; CHECK-INTERESTINGNESS: store i32 2 ; CHECK: store i32 0 ; CHECK-NEXT: br label %bb5 ; CHECK: bb5: ; CHECK-NEXT: switch ; CHECK: bb6: ; CHECK-NEXT: %tmp = phi i32 [ %tmp7, %bb6 ] ; CHECK-NEXT: store i32 1 ; CHECK-NEXT: %tmp7 = or i32 %tmp, 0 ; CHECK-NEXT: br label %bb6 ; CHECK-NOT: bb7 ; CHECK: bb8: ; CHECK-NEXT: store i32 2, define amdgpu_kernel void @snork(i32 %arg, i1 %arg1) { bb: store i32 0, ptr addrspace(3) null br i1 %arg1, label %bb5, label %bb7 bb5: ; preds = %bb5, %bb switch i32 %arg, label %bb5 [ i32 0, label %bb8 i32 1, label %bb6 ] bb6: ; preds = %bb6, %bb5 %tmp = phi i32 [ %tmp7, %bb6 ], [ 0, %bb5 ] store i32 1, ptr addrspace(3) null %tmp7 = or i32 %tmp, 0 br label %bb6 bb7: store i32 3, ptr addrspace(3) null br label %bb8 bb8: ; preds = %bb5 store i32 2, ptr addrspace(3) null unreachable }