diff options
| author | Adam Nemet <anemet@apple.com> | 2016-08-10 00:44:44 +0000 |
|---|---|---|
| committer | Adam Nemet <anemet@apple.com> | 2016-08-10 00:44:44 +0000 |
| commit | 896c09bd10d816edac4d0c5308ec95536c448191 (patch) | |
| tree | 440bd2e9b624e15b1cafcaba01d1993a40f5d20a /llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll | |
| parent | 0af91f57cafb6061738adee13d0481c220df7310 (diff) | |
| download | bcm5719-llvm-896c09bd10d816edac4d0c5308ec95536c448191.tar.gz bcm5719-llvm-896c09bd10d816edac4d0c5308ec95536c448191.zip | |
[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
Diffstat (limited to 'llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll')
| -rw-r--r-- | llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll b/llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll new file mode 100644 index 00000000000..9611a2dd1bd --- /dev/null +++ b/llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll @@ -0,0 +1,39 @@ +; 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} |

