llvm/test/Transforms/CodeExtractor/MultipleExitBranchProb.ll
Sean Silva e9e07465ef CodeExtractor : Add ability to preserve profile data.
Added ability to estimate the entry count of the extracted function and
the branch probabilities of the exit branches.

Patch by River Riddle!

Differential Revision: https://reviews.llvm.org/D22744

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277411 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-02 02:15:45 +00:00

35 lines
884 B
LLVM

; RUN: opt < %s -partial-inliner -S | FileCheck %s
; This test checks to make sure that CodeExtractor updates
; the exit branch probabilities for multiple exit blocks.
define i32 @inlinedFunc(i1 %cond) !prof !1 {
entry:
br i1 %cond, label %if.then, label %return, !prof !2
if.then:
br i1 %cond, label %return, label %return.2, !prof !3
return.2:
ret i32 10
return: ; preds = %entry
ret i32 0
}
define internal i32 @dummyCaller(i1 %cond) !prof !1 {
entry:
%val = call i32 @inlinedFunc(i1 %cond)
ret i32 %val
; CHECK-LABEL: @dummyCaller
; CHECK: call
; CHECK-NEXT: br i1 {{.*}}!prof [[COUNT1:![0-9]+]]
}
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"MaxFunctionCount", i32 10000}
!1 = !{!"function_entry_count", i64 10000}
!2 = !{!"branch_weights", i32 5, i32 5}
!3 = !{!"branch_weights", i32 4, i32 1}
; CHECK: [[COUNT1]] = !{!"branch_weights", i32 8, i32 31}