; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux < %s | FileCheck %s

define void @foo() !prof !1 {
; Test if a cold block in a loop will be placed at the end of the function
; chain.
;
; CHECK-LABEL: foo:
; CHECK: callq b
; CHECK: callq c
; CHECK: callq e
; CHECK: callq f
; CHECK: callq d

entry:
  br label %header

header:
  call void @b()
  %call = call zeroext i1 @a()
  br i1 %call, label %if.then, label %if.else, !prof !4

if.then:
  call void @c()
  br label %if.end

if.else:
  call void @d()
  br label %if.end

if.end:
  call void @e()
  %call2 = call zeroext i1 @a()
  br i1 %call2, label %header, label %end, !prof !5

end:
  call void @f()
  ret void
}

define void @nested_loop_0() !prof !1 {
; Test if a block that is cold in the inner loop but not cold in the outer loop
; will merged to the outer loop chain.
;
; CHECK-LABEL: nested_loop_0:
; CHECK: callq c
; CHECK: callq d
; CHECK: callq e
; CHECK: callq b
; CHECK: callq f

entry:
  br label %header

header:
  call void @b()
  %call4 = call zeroext i1 @a()
  br i1 %call4, label %header2, label %end

header2:
  call void @c()
  %call = call zeroext i1 @a()
  br i1 %call, label %if.then, label %if.else, !prof !2

if.then:
  call void @d()
  %call3 = call zeroext i1 @a()
  br i1 %call3, label %header2, label %header, !prof !3

if.else:
  call void @e()
  %call2 = call zeroext i1 @a()
  br i1 %call2, label %header2, label %header, !prof !3

end:
  call void @f()
  ret void
}

define void @nested_loop_1() !prof !1 {
; Test if a cold block in an inner loop will be placed at the end of the
; function chain.
;
; CHECK-LABEL: nested_loop_1:
; CHECK: callq b
; CHECK: callq c
; CHECK: callq e
; CHECK: callq d

entry:
  br label %header

header:
  call void @b()
  br label %header2

header2:
  call void @c()
  %call = call zeroext i1 @a()
  br i1 %call, label %end, label %if.else, !prof !4

if.else:
  call void @d()
  %call2 = call zeroext i1 @a()
  br i1 %call2, label %header2, label %header, !prof !5

end:
  call void @e()
  ret void
}

declare zeroext i1 @a()
declare void @b()
declare void @c()
declare void @d()
declare void @e()
declare void @f()

!1 = !{!"function_entry_count", i64 1}
!2 = !{!"branch_weights", i32 100, i32 1}
!3 = !{!"branch_weights", i32 1, i32 10}
!4 = !{!"branch_weights", i32 1000, i32 1}
!5 = !{!"branch_weights", i32 100, i32 1}
