[PATCH] D15243: [PGO]: Do not use invalid Char in instrumentation variable names

David Li via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 4 22:17:11 PST 2015


davidxl updated this revision to Diff 41985.
davidxl added a comment.

Updated patch.

With this change, the format change will be backward compatible.

Clang test case changes will be in another patch -- mostly mechanical. Existing test cases also include one binary profile test  that covers the old naming scheme.


http://reviews.llvm.org/D15243

Files:
  include/llvm/ProfileData/InstrProf.h
  lib/ProfileData/InstrProf.cpp

Index: lib/ProfileData/InstrProf.cpp
===================================================================
--- lib/ProfileData/InstrProf.cpp
+++ lib/ProfileData/InstrProf.cpp
@@ -74,14 +74,15 @@
 
 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 @@
     // 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;
 }
Index: include/llvm/ProfileData/InstrProf.h
===================================================================
--- include/llvm/ProfileData/InstrProf.h
+++ 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;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15243.41985.patch
Type: text/x-patch
Size: 1794 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151205/3cdb4549/attachment.bin>


More information about the llvm-commits mailing list