summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/ProfileData/InstrProf.h2
-rw-r--r--llvm/lib/ProfileData/InstrProf.cpp9
-rw-r--r--llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext2
-rw-r--r--llvm/test/Transforms/PGOProfile/criticaledge.ll4
-rw-r--r--llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4bin0 -> 816 bytes
-rw-r--r--llvm/test/tools/llvm-profdata/compat.proftext7
6 files changed, 16 insertions, 8 deletions
diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h
index 2730cc167f7..577201542a9 100644
--- a/llvm/include/llvm/ProfileData/InstrProf.h
+++ b/llvm/include/llvm/ProfileData/InstrProf.h
@@ -30,7 +30,7 @@
#include <system_error>
#include <vector>
-#define INSTR_PROF_INDEX_VERSION 3
+#define INSTR_PROF_INDEX_VERSION 4
namespace llvm {
class Function;
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp
index a965a1208b5..2608847fd10 100644
--- a/llvm/lib/ProfileData/InstrProf.cpp
+++ b/llvm/lib/ProfileData/InstrProf.cpp
@@ -74,14 +74,15 @@ namespace llvm {
std::string getPGOFuncName(StringRef RawFuncName,
GlobalValue::LinkageTypes Linkage,
- StringRef FileName,
- uint64_t Version LLVM_ATTRIBUTE_UNUSED) {
+ StringRef FileName, uint64_t Version) {
// Function names may be prefixed with a binary '1' to indicate
// that the backend should not modify the symbols due to any platform
// naming convention. Do not include that '1' in the PGO profile name.
if (RawFuncName[0] == '\1')
RawFuncName = RawFuncName.substr(1);
+ const char *Unknown = (Version <= 3 ? "<unknown>:" : "__unknown__");
+ const char *Sep = (Version <= 3 ? ":" : "__");
std::string FuncName = RawFuncName;
if (llvm::GlobalValue::isLocalLinkage(Linkage)) {
@@ -90,9 +91,9 @@ std::string getPGOFuncName(StringRef RawFuncName,
// that it will stay the same, e.g., if the files are checked out from
// version control in different locations.
if (FileName.empty())
- FuncName = FuncName.insert(0, "<unknown>:");
+ FuncName = FuncName.insert(0, Unknown);
else
- FuncName = FuncName.insert(0, FileName.str() + ":");
+ FuncName = FuncName.insert(0, FileName.str() + Sep);
}
return FuncName;
}
diff --git a/llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext b/llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
index f369ba7c350..eb5eb16c6cc 100644
--- a/llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
+++ b/llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext
@@ -10,7 +10,7 @@ test_criticalEdge
2
1
-<stdin>:bar
+<stdin>__bar
12884901887
1
7
diff --git a/llvm/test/Transforms/PGOProfile/criticaledge.ll b/llvm/test/Transforms/PGOProfile/criticaledge.ll
index 7898f3b9eb1..7e0a7fd5220 100644
--- a/llvm/test/Transforms/PGOProfile/criticaledge.ll
+++ b/llvm/test/Transforms/PGOProfile/criticaledge.ll
@@ -5,7 +5,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; GEN: @__llvm_profile_name_test_criticalEdge = private constant [17 x i8] c"test_criticalEdge"
-; GEN: @"__llvm_profile_name_<stdin>:bar" = private constant [11 x i8] c"<stdin>:bar"
+; GEN: @"__llvm_profile_name_<stdin>__bar" = private constant [12 x i8] c"<stdin>__bar"
define i32 @test_criticalEdge(i32 %i, i32 %j) {
entry:
@@ -99,7 +99,7 @@ return:
define internal i32 @bar(i32 %i) {
entry:
-; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"__llvm_profile_name_<stdin>:bar", i32 0, i32 0), i64 12884901887, i32 1, i32 0)
+; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"__llvm_profile_name_<stdin>__bar", i32 0, i32 0), i64 12884901887, i32 1, i32 0)
ret i32 %i
}
diff --git a/llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4 b/llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4
new file mode 100644
index 00000000000..1720c407282
--- /dev/null
+++ b/llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4
Binary files differ
diff --git a/llvm/test/tools/llvm-profdata/compat.proftext b/llvm/test/tools/llvm-profdata/compat.proftext
index 139202d162e..5bc6c9a7369 100644
--- a/llvm/test/tools/llvm-profdata/compat.proftext
+++ b/llvm/test/tools/llvm-profdata/compat.proftext
@@ -65,3 +65,10 @@ large_numbers
# FORMATV2-NEXT: Maximum internal block count: 1000000
+# RUN: llvm-profdata show %S/Inputs/compat.profdata.v4 -all-functions --counts | FileCheck %s -check-prefix=FORMATV4
+# FORMATV4: instrprof.c__foo_static:
+# FORMATV4-NEXT: Hash: 0x000000000000000a
+# FORMATV4-NEXT: Counters: 2
+# FORMATV4-NEXT: Function count: 500500
+# FORMATV4-NEXT: Block counts: [180100]
+
OpenPOWER on IntegriCloud