summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2016-02-10 18:24:45 +0000
committerRong Xu <xur@google.com>2016-02-10 18:24:45 +0000
commit13b01dc8d9ec1fc46e8e75d52bec94e47136d291 (patch)
tree5a9f47de9317f4088be9cd008e9efce2de8b74c0 /llvm/test
parenta14364115e1fd07407299bcf633c2fc0344894b8 (diff)
downloadbcm5719-llvm-13b01dc8d9ec1fc46e8e75d52bec94e47136d291.tar.gz
bcm5719-llvm-13b01dc8d9ec1fc46e8e75d52bec94e47136d291.zip
[PGO] Indirect-call profile annotation in IR level profiling
This patch reads the indirect-call value records in the profile and makes the annotation in the indirect-call instruction. This is for IR level profile instrumentation. Differential Revision: http://reviews.llvm.org/D16935 llvm-svn: 260400
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext43
-rw-r--r--llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll35
2 files changed, 78 insertions, 0 deletions
diff --git a/llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext b/llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
new file mode 100644
index 00000000000..269d85c5fd9
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/Inputs/indirect_call.proftext
@@ -0,0 +1,43 @@
+:ir
+bar
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+140
+# Num Value Kinds:
+1
+# ValueKind = IPVK_IndirectCallTarget:
+0
+# NumValueSites:
+1
+3
+func2:80
+func1:40
+func3:20
+
+func1
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+40
+
+func2
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+80
+
+func3
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+20
+
diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll b/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll
new file mode 100644
index 00000000000..e2479d72bf6
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-profdata merge %S/Inputs/indirect_call.proftext -o %t.profdata
+; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s --check-prefix=VP-ANNOTATION
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+@foo = common global i32 (i32)* null, align 8
+
+define i32 @func1(i32 %x) {
+entry:
+ ret i32 %x
+}
+
+define i32 @func2(i32 %x) {
+entry:
+ %add = add nsw i32 %x, 1
+ ret i32 %add
+}
+
+define i32 @func3(i32 %x) {
+entry:
+ %add = add nsw i32 %x, 3
+ ret i32 %add
+}
+
+define i32 @bar(i32 %i) {
+entry:
+ %tmp = load i32 (i32)*, i32 (i32)** @foo, align 8
+ %call = call i32 %tmp(i32 %i)
+; VP-ANNOTATION: %call = call i32 %tmp(i32 %i)
+; VP-ANNOTATION-SAME: !prof ![[VP:[0-9]+]]
+; VP-ANNOTATION: ![[VP]] = !{!"VP", i32 0, i64 140, i64 -4377547752858689819, i64 80, i64 -2545542355363006406, i64 40, i64 -6929281286627296573, i64 20}
+ ret i32 %call
+}
+
+
OpenPOWER on IntegriCloud