1cee313d2SEric Christopher; RUN: opt -jump-threading -S < %s | FileCheck %s 2cee313d2SEric Christopher; RUN: opt -passes=jump-threading -S < %s | FileCheck %s 3cee313d2SEric Christopher 4cee313d2SEric Christopherdefine void @test() { 5cee313d2SEric Christopher; CHECK-LABEL: @test() 6cee313d2SEric Christopherbb: 7cee313d2SEric Christopher %tmp = call i32 @a() 8cee313d2SEric Christopher %tmp1 = icmp eq i32 %tmp, 1 9cee313d2SEric Christopher br i1 %tmp1, label %bb5, label %bb2 10cee313d2SEric Christopher; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]] 11cee313d2SEric Christopher 12cee313d2SEric Christopherbb2: ; preds = %bb 13cee313d2SEric Christopher %tmp3 = call i32 @b() 14cee313d2SEric Christopher %tmp4 = icmp ne i32 %tmp3, 1 15cee313d2SEric Christopher br label %bb5 16cee313d2SEric Christopher; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]] 17cee313d2SEric Christopher 18cee313d2SEric Christopherbb5: ; preds = %bb2, %bb 19cee313d2SEric Christopher %tmp6 = phi i1 [ false, %bb ], [ %tmp4, %bb2 ] 20cee313d2SEric Christopher br i1 %tmp6, label %bb8, label %bb7, !prof !0 21cee313d2SEric Christopher 22cee313d2SEric Christopherbb7: ; preds = %bb5 23cee313d2SEric Christopher call void @bar() 24cee313d2SEric Christopher br label %bb8 25cee313d2SEric Christopher 26cee313d2SEric Christopherbb8: ; preds = %bb7, %bb5 27cee313d2SEric Christopher ret void 28cee313d2SEric Christopher} 29cee313d2SEric Christopher 30cee313d2SEric Christopherdefine void @test_single_pred1() { 31cee313d2SEric Christopher; CHECK-LABEL: @test_single_pred1() 32cee313d2SEric Christopherbb: 33cee313d2SEric Christopher %tmp = call i32 @a() 34cee313d2SEric Christopher %tmp1 = icmp eq i32 %tmp, 1 35cee313d2SEric Christopher br i1 %tmp1, label %bb5_1, label %bb2 36cee313d2SEric Christopher; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]] 37cee313d2SEric Christopher 38cee313d2SEric Christopherbb5_1: 39cee313d2SEric Christopher br label %bb5; 40cee313d2SEric Christopher 41cee313d2SEric Christopherbb2: 42cee313d2SEric Christopher %tmp3 = call i32 @b() 43cee313d2SEric Christopher %tmp4 = icmp ne i32 %tmp3, 1 44cee313d2SEric Christopher br label %bb5 45cee313d2SEric Christopher; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]] 46cee313d2SEric Christopher 47cee313d2SEric Christopherbb5: 48cee313d2SEric Christopher %tmp6 = phi i1 [ false, %bb5_1 ], [ %tmp4, %bb2 ] 49cee313d2SEric Christopher br i1 %tmp6, label %bb8, label %bb7, !prof !0 50cee313d2SEric Christopher 51cee313d2SEric Christopherbb7: 52cee313d2SEric Christopher call void @bar() 53cee313d2SEric Christopher br label %bb8 54cee313d2SEric Christopher 55cee313d2SEric Christopherbb8: 56cee313d2SEric Christopher ret void 57cee313d2SEric Christopher} 58cee313d2SEric Christopher 59cee313d2SEric Christopherdefine void @test_single_pred2() { 60cee313d2SEric Christopher; CHECK-LABEL: @test_single_pred2() 61cee313d2SEric Christopherbb: 62cee313d2SEric Christopher %tmp = call i32 @a() 63cee313d2SEric Christopher %tmp1 = icmp eq i32 %tmp, 1 64cee313d2SEric Christopher br i1 %tmp1, label %bb5_1, label %bb2 65cee313d2SEric Christopher; CHECK: br i1 %tmp1,{{.*}} !prof ![[PROF1:[0-9]+]] 66cee313d2SEric Christopher 67cee313d2SEric Christopherbb5_1: 68cee313d2SEric Christopher br label %bb5_2; 69cee313d2SEric Christopher 70cee313d2SEric Christopherbb5_2: 71cee313d2SEric Christopher br label %bb5; 72cee313d2SEric Christopher 73cee313d2SEric Christopherbb2: 74cee313d2SEric Christopher %tmp3 = call i32 @b() 75cee313d2SEric Christopher %tmp4 = icmp ne i32 %tmp3, 1 76cee313d2SEric Christopher br label %bb5 77cee313d2SEric Christopher; CHECK: br i1 %tmp4, {{.*}} !prof ![[PROF2:[0-9]+]] 78cee313d2SEric Christopher 79cee313d2SEric Christopherbb5: 80cee313d2SEric Christopher %tmp6 = phi i1 [ false, %bb5_2 ], [ %tmp4, %bb2 ] 81cee313d2SEric Christopher br i1 %tmp6, label %bb8, label %bb7, !prof !0 82cee313d2SEric Christopher 83cee313d2SEric Christopherbb7: 84cee313d2SEric Christopher call void @bar() 85cee313d2SEric Christopher br label %bb8 86cee313d2SEric Christopher 87cee313d2SEric Christopherbb8: 88cee313d2SEric Christopher ret void 89cee313d2SEric Christopher} 90cee313d2SEric Christopher 91cee313d2SEric Christopherdeclare void @bar() 92cee313d2SEric Christopher 93cee313d2SEric Christopherdeclare i32 @a() 94cee313d2SEric Christopher 95cee313d2SEric Christopherdeclare i32 @b() 96cee313d2SEric Christopher 97*5c31b8b9SArthur Eubanks!0 = !{!"branch_weights", i32 2146410443, i32 1073205} 98*5c31b8b9SArthur Eubanks;CHECK: ![[PROF1]] = !{!"branch_weights", i32 1073205, i32 2146410443} 99*5c31b8b9SArthur Eubanks;CHECK: ![[PROF2]] = !{!"branch_weights", i32 2146410443, i32 1073205} 100