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 7define void @foo() { 8entry: 9 br i1 true, label %bb6, label %bb3 10 11bb3: 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 17bb4: 18 br label %bb5 19 20bb5: 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 26bb6: 27 ret void 28} 29 30; CHECK-LABEL: @bar 31; Just check that we don't crash on this test. 32define void @bar(i1 %p) { 33entry: 34 br i1 false, label %bb2, label %exit 35 36bb2: 37 %x0 = phi i32 [ undef, %entry ], [ %x1, %bb5 ] 38 br i1 %p, label %bb3, label %bb4 39 40bb3: 41 br label %bb5 42 43bb4: 44 br label %bb5 45 46bb5: 47 %x1 = phi i32 [ %x0, %bb3 ], [ 0, %bb4 ] 48 switch i32 %x1, label %exit [ 49 i32 10, label %bb2 50 ] 51 52exit: 53 ret void 54} 55