; RUN: opt -simplifycfg -S -o - < %s | FileCheck %s declare void @helper(i32) define void @test1(i1 %a, i1 %b) { ; CHECK: @test1 entry: br i1 %a, label %Y, label %X, !prof !0 ; CHECK: br i1 %or.cond, label %Z, label %Y, !prof !0 X: %c = or i1 %b, false br i1 %c, label %Z, label %Y, !prof !1 Y: call void @helper(i32 0) ret void Z: call void @helper(i32 1) ret void } define void @test2(i1 %a, i1 %b) { ; CHECK: @test2 entry: br i1 %a, label %X, label %Y, !prof !1 ; CHECK: br i1 %or.cond, label %Z, label %Y, !prof !1 ; CHECK-NOT: !prof X: %c = or i1 %b, false br i1 %c, label %Z, label %Y, !prof !2 Y: call void @helper(i32 0) ret void Z: call void @helper(i32 1) ret void } define void @test3(i1 %a, i1 %b) { ; CHECK: @test3 ; CHECK-NOT: !prof entry: br i1 %a, label %X, label %Y, !prof !1 X: %c = or i1 %b, false br i1 %c, label %Z, label %Y Y: call void @helper(i32 0) ret void Z: call void @helper(i32 1) ret void } define void @test4(i1 %a, i1 %b) { ; CHECK: @test4 ; CHECK-NOT: !prof entry: br i1 %a, label %X, label %Y X: %c = or i1 %b, false br i1 %c, label %Z, label %Y, !prof !1 Y: call void @helper(i32 0) ret void Z: call void @helper(i32 1) ret void } !0 = metadata !{metadata !"branch_weights", i32 3, i32 5} !1 = metadata !{metadata !"branch_weights", i32 1, i32 1} !2 = metadata !{metadata !"branch_weights", i32 1, i32 2} ; CHECK: !0 = metadata !{metadata !"branch_weights", i32 5, i32 11} ; CHECK: !1 = metadata !{metadata !"branch_weights", i32 1, i32 5} ; CHECK-NOT: !2