1; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS0 --test-arg %s --test-arg --input-file %s -o %t.0 2; RUN: FileCheck -check-prefix=RESULT0 %s < %t.0 3 4; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS1 --test-arg %s --test-arg --input-file %s -o %t.1 5; RUN: FileCheck -check-prefix=RESULT1 %s < %t.1 6 7; CHECK-INTERESTINGNESS0: store i32 1, 8; CHECK-INTERESTINGNESS0: store i32 2, 9 10; CHECK-INTERESTINGNESS1: store i32 2, 11 12 13; RESULT0: bb: 14; RESULT0-NEXT: %bb.load = load i32, ptr null, align 4 15; RESULT0-NEXT: store i32 0, ptr null, align 4 16; RESULT0-NEXT: br i1 %arg0, label %bb1, label %bb2 17 18; RESULT0: bb1: 19; RESULT0-NEXT: store i32 1, ptr null, align 4 20; RESULT0-NEXT: ret void 21 22; RESULT0: bb2: ; preds = %bb 23; RESULT0-NEXT: store i32 2, ptr null, align 4 24; RESULT0-NEXT: switch i32 %bb.load, label %bb1 [ 25; RESULT0-NEXT: i32 0, label %bb1 26; RESULT0-NEXT: ] 27 28 29; RESULT1: bb: 30; RESULT1-NEXT: %bb.load = load i32, ptr null, align 4 31; RESULT1-NEXT: store i32 0, ptr null, align 4 32; RESULT1-NEXT: br label %bb2 33 34; RESULT1: bb2: 35; RESULT1-NEXT: store i32 2, ptr null, align 4 36; RESULT1-NEXT: ret void 37define void @main(i1 %arg0) { 38bb: 39 %bb.load = load i32, ptr null 40 store i32 0, ptr null 41 br i1 %arg0, label %bb1, label %bb2 42 43bb1: 44 %bb1.phi = phi i32 [%bb.load, %bb], [9, %bb3], [%bb2.phi, %bb2] 45 store i32 1, ptr null 46 ret void 47 48bb2: 49 %bb2.phi = phi i32 [%bb.load, %bb], [%bb3.load, %bb3] 50 store i32 2, ptr null 51 switch i32 %bb2.phi, label %bb3 [ 52 i32 0, label %bb1 53 i32 1, label %bb4 54 ] 55 56bb3: 57 %bb3.load = load i32, ptr null 58 store i32 3, ptr null 59 br i1 true, label %bb2, label %bb1 60 61bb4: 62 store i32 4, ptr null 63 ret void 64} 65