diff options
-rw-r--r-- | llvm/include/llvm/ProfileData/InstrProf.h | 2 | ||||
-rw-r--r-- | llvm/lib/ProfileData/InstrProf.cpp | 9 | ||||
-rw-r--r-- | llvm/test/Transforms/PGOProfile/Inputs/criticaledge.proftext | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/PGOProfile/criticaledge.ll | 4 | ||||
-rw-r--r-- | llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4 | bin | 0 -> 816 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-profdata/compat.proftext | 7 |
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 Binary files differnew file mode 100644 index 00000000000..1720c407282 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/compat.profdata.v4 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] + |