mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 21:42:54 +02:00
975ffb9e11
Summary: The inliner not being a function pass requires the work-around of generating the OptimizationRemarkEmitter and in turn BFI on demand. This will go away after the new PM is ready. BFI is only computed inside ORE if the user has requested hotness information for optimization diagnostitics (-pass-remark-with-hotness at the 'opt' level). Thus there is no additional overhead without the flag. Reviewers: hfinkel, davidxl, eraman Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D22694 llvm-svn: 278185
40 lines
1020 B
LLVM
40 lines
1020 B
LLVM
; RUN: opt < %s -inline -pass-remarks=inline -pass-remarks-missed=inline \
|
|
; RUN: -pass-remarks-analysis=inline -pass-remarks-with-hotness -S 2>&1 \
|
|
; RUN: | FileCheck %s
|
|
|
|
; CHECK: foo should always be inlined (cost=always) (hotness: 30)
|
|
; CHECK: foo inlined into bar (hotness: 30)
|
|
; CHECK: foz should never be inlined (cost=never) (hotness: 30)
|
|
; CHECK: foz will not be inlined into bar (hotness: 30)
|
|
|
|
; Function Attrs: alwaysinline nounwind uwtable
|
|
define i32 @foo() #0 !prof !1 {
|
|
entry:
|
|
ret i32 4
|
|
}
|
|
|
|
; Function Attrs: noinline nounwind uwtable
|
|
define i32 @foz() #1 !prof !2 {
|
|
entry:
|
|
ret i32 2
|
|
}
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define i32 @bar() !prof !3 {
|
|
entry:
|
|
%call = call i32 @foo()
|
|
%call2 = call i32 @foz()
|
|
%mul = mul i32 %call, %call2
|
|
ret i32 %mul
|
|
}
|
|
|
|
attributes #0 = { alwaysinline }
|
|
attributes #1 = { noinline }
|
|
|
|
!llvm.ident = !{!0}
|
|
|
|
!0 = !{!"clang version 3.5.0 "}
|
|
!1 = !{!"function_entry_count", i64 10}
|
|
!2 = !{!"function_entry_count", i64 20}
|
|
!3 = !{!"function_entry_count", i64 30}
|