summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2018-11-07 23:51:20 +0000
committerRong Xu <xur@google.com>2018-11-07 23:51:20 +0000
commitfb4bcc452c0cfba85b7e5b177727eb8c8f966c58 (patch)
tree4c56e5c3546d58ff9a5f34f3a5beecd577a5a6d1 /llvm/test
parent892bbd3f88b9f44efeb4fa9156e569c188d600f3 (diff)
downloadbcm5719-llvm-fb4bcc452c0cfba85b7e5b177727eb8c8f966c58.tar.gz
bcm5719-llvm-fb4bcc452c0cfba85b7e5b177727eb8c8f966c58.zip
[PGO] Exit early if all count values are zero
If all the edge counts for a function are zero, skip count population and annotation, as nothing will happen. This can save some compile time. Differential Revision: https://reviews.llvm.org/D54212 llvm-svn: 346370
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext17
-rw-r--r--llvm/test/Transforms/PGOProfile/func_entry.ll29
2 files changed, 46 insertions, 0 deletions
diff --git a/llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext b/llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
new file mode 100644
index 00000000000..2dc2c2ec9f3
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/Inputs/func_entry.proftext
@@ -0,0 +1,17 @@
+# IR level Instrumentation Flag
+:ir
+foo
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+9999
+
+bar
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
diff --git a/llvm/test/Transforms/PGOProfile/func_entry.ll b/llvm/test/Transforms/PGOProfile/func_entry.ll
new file mode 100644
index 00000000000..dac996e35cb
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/func_entry.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-profdata merge %S/Inputs/func_entry.proftext -o %t.profdata
+; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+@s = common dso_local local_unnamed_addr global i32 0, align 4
+
+define void @bar() {
+; CHECK-LABEL: @bar
+; CHECK-SAME: !prof ![[FUNC_ENTRY_COUNT_ZERO:[0-9]+]]
+
+entry:
+ store i32 1, i32* @s, align 4
+ ret void
+}
+
+define void @foo() {
+; CHECK-LABEL: @foo
+; CHECK-SAME: !prof ![[FUNC_ENTRY_COUNT_NON_ZERO:[0-9]+]]
+entry:
+ %0 = load i32, i32* @s, align 4
+ %add = add nsw i32 %0, 4
+ store i32 %add, i32* @s, align 4
+ ret void
+}
+
+; CHECK-DAG: ![[FUNC_ENTRY_COUNT_ZERO]] = !{!"function_entry_count", i64 0}
+; CHECK-DAG: ![[FUNC_ENTRY_COUNT_NON_ZERO]] = !{!"function_entry_count", i64 9999}
OpenPOWER on IntegriCloud