1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 21:42:54 +02:00
llvm-mirror/test/Transforms/Inline/optimization-remarks-with-hotness.ll
Adam Nemet 975ffb9e11 [Inliner,OptDiag] Add hotness attribute to opt diagnostics
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
2016-08-10 00:44:44 +00:00

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}