; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux < %s | FileCheck %s ; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -outline-optional-branches < %s | FileCheck %s -check-prefix=CHECK-OUTLINE define void @foo(i32 %t1, i32 %t2, i32 %t3) { ; Test that we lift the call to 'c' up to immediately follow the call to 'b' ; when we disable the cfg conflict check. ; ; CHECK-LABEL: foo: ; CHECK: callq a ; CHECK: callq a ; CHECK: callq a ; CHECK: callq a ; CHECK: callq b ; CHECK: callq c ; CHECK: callq d ; CHECK: callq e ; CHECK: callq f ; ; CHECK-OUTLINE-LABEL: foo: ; CHECK-OUTLINE: callq b ; CHECK-OUTLINE: callq c ; CHECK-OUTLINE: callq d ; CHECK-OUTLINE: callq e ; CHECK-OUTLINE: callq f ; CHECK-OUTLINE: callq a ; CHECK-OUTLINE: callq a ; CHECK-OUTLINE: callq a ; CHECK-OUTLINE: callq a entry: %cmp = icmp eq i32 %t1, 0 br i1 %cmp, label %if.then, label %if.end if.then: call void @a() call void @a() call void @a() call void @a() br label %if.end if.end: call void @b() br label %hotbranch hotbranch: %cmp2 = icmp eq i32 %t2, 0 br i1 %cmp2, label %if.then2, label %if.end2, !prof !1 if.then2: call void @c() br label %if.end2 if.end2: call void @d() br label %shortbranch shortbranch: %cmp3 = icmp eq i32 %t3, 0 br i1 %cmp3, label %if.then3, label %if.end3 if.then3: call void @e() br label %if.end3 if.end3: call void @f() ret void } declare void @a() declare void @b() declare void @c() declare void @d() declare void @e() declare void @f() !1 = !{!"branch_weights", i32 64, i32 4}