summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2016-08-10 00:44:44 +0000
committerAdam Nemet <anemet@apple.com>2016-08-10 00:44:44 +0000
commit896c09bd10d816edac4d0c5308ec95536c448191 (patch)
tree440bd2e9b624e15b1cafcaba01d1993a40f5d20a /llvm/test/Transforms/Inline/optimization-remarks-with-hotness.ll
parent0af91f57cafb6061738adee13d0481c220df7310 (diff)
downloadbcm5719-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.ll39
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}
OpenPOWER on IntegriCloud