1 ; RUN: opt -S < %s -jump-threading | FileCheck %s 2 ; CHECK-LABEL: @foo 3 ; CHECK: bb6: 4 ; CHECK-NEXT: ret void 5 ; CHECK: bb3: 6 ; CHECK: br label %bb3 7 define void @foo() { 8 entry: 9 br i1 true, label %bb6, label %bb3 10 11 bb3: 12 %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ] 13 %y = and i64 undef, 1 14 %p = icmp ne i64 %y, 0 15 br i1 %p, label %bb4, label %bb5 16 17 bb4: 18 br label %bb5 19 20 bb5: 21 %x1 = phi i32 [ %x0, %bb3 ], [ %x0, %bb4 ] 22 %z = phi i32 [ 0, %bb3 ], [ 1, %bb4 ] 23 %q = icmp eq i32 %z, 0 24 br i1 %q, label %bb3, label %bb6 25 26 bb6: 27 ret void 28 } 29 30 ; CHECK-LABEL: @bar 31 ; Just check that we don't crash on this test. 32 define void @bar(i1 %p) { 33 entry: 34 br i1 false, label %bb2, label %exit 35 36 bb2: 37 %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ] 38 br i1 %p, label %bb3, label %bb4 39 40 bb3: 41 br label %bb5 42 43 bb4: 44 br label %bb5 45 46 bb5: 47 %x1 = phi i32 [ %x0, %bb3 ], [ 0, %bb4 ] 48 switch i32 %x1, label %exit [ 49 i32 10, label %bb2 50 ] 51 52 exit: 53 ret void 54 } 55