From f20b6cec1c50d624fb5fb6a9003407be6e9f1bad Mon Sep 17 00:00:00 2001 From: Vedant Kumar Date: Mon, 28 Mar 2016 20:12:07 +0000 Subject: [PATCH] Reapply "[PGO] Fix name encoding for ObjC-like functions" Function names in ObjC can have spaces in them. This interacts poorly with name compression, which uses spaces to separate PGO names. Fix the issue by using a different separator and update a test. I chose "\01" as the separator because 1) it's non-printable, 2) we strip it from PGO names, and 3) it's the next natural choice once "\00" is discarded (that one's overloaded). This reverts the revert commit beaf3d18. What's changed? - I fixed up the covmap-V2 binary format tests using a linux VM. - I updated the expected counts in instrprof-comdat.h to account for the fact that there have been bugfixes to clang coverage. - I added an assert to make sure we don't get bitten by this again. Differential Revision: http://reviews.llvm.org/D18516 llvm-svn: 264641 --- llvm/include/llvm/ProfileData/InstrProf.h | 3 +++ llvm/lib/ProfileData/InstrProf.cpp | 10 ++++++++-- .../llvm-cov/Inputs/binary-formats.v2.linux32l | Bin 29634 -> 29424 bytes .../llvm-cov/Inputs/binary-formats.v2.linux64l | Bin 2125077 -> 2124848 bytes .../llvm-cov/Inputs/elf_binary_comdat.profdata | Bin 1040 -> 840 bytes llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h | 11 ++++++++--- .../tools/llvm-profdata/Inputs/c-general.profraw | Bin 1696 -> 1648 bytes llvm/test/tools/llvm-profdata/raw-32-bits-be.test | 2 +- llvm/test/tools/llvm-profdata/raw-32-bits-le.test | 2 +- llvm/test/tools/llvm-profdata/raw-64-bits-be.test | 2 +- llvm/test/tools/llvm-profdata/raw-64-bits-le.test | 2 +- llvm/unittests/ProfileData/InstrProfTest.cpp | 4 ++-- 12 files changed, 25 insertions(+), 11 deletions(-) diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h index 3bf0aa3..31fcffe 100644 --- a/llvm/include/llvm/ProfileData/InstrProf.h +++ b/llvm/include/llvm/ProfileData/InstrProf.h @@ -151,6 +151,9 @@ inline StringRef getInstrProfFileOverriderFuncName() { return "__llvm_profile_override_default_filename"; } +/// Return the marker used to separate PGO names during serialization. +inline StringRef getInstrProfNameSeparator() { return "\01"; } + /// Return the modified name for function \c F suitable to be /// used the key for profile lookup. std::string getPGOFuncName(const Function &F, diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp index 2446521..1be3df4 100644 --- a/llvm/lib/ProfileData/InstrProf.cpp +++ b/llvm/lib/ProfileData/InstrProf.cpp @@ -158,9 +158,15 @@ void InstrProfSymtab::create(const Module &M) { int collectPGOFuncNameStrings(const std::vector &NameStrs, bool doCompression, std::string &Result) { + assert(NameStrs.size() && "No name data to emit"); + uint8_t Header[16], *P = Header; std::string UncompressedNameStrings = - join(NameStrs.begin(), NameStrs.end(), StringRef(" ")); + join(NameStrs.begin(), NameStrs.end(), getInstrProfNameSeparator()); + + assert(StringRef(UncompressedNameStrings) + .count(getInstrProfNameSeparator()) == (NameStrs.size() - 1) && + "PGO name is invalid (contains separator token)"); unsigned EncLen = encodeULEB128(UncompressedNameStrings.length(), P); P += EncLen; @@ -238,7 +244,7 @@ int readPGOFuncNameStrings(StringRef NameStrings, InstrProfSymtab &Symtab) { } // Now parse the name strings. SmallVector Names; - NameStrings.split(Names, ' '); + NameStrings.split(Names, getInstrProfNameSeparator()); for (StringRef &Name : Names) Symtab.addFuncName(Name); diff --git a/llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux32l b/llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux32l index 624483bf6e31086e1c297787361784f497d76821..6ea83e5d24ec1d68fe4326ab8fbe274a22675ea7 100755 GIT binary patch literal 29424 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 Tfn(ClueK5A#-?*BgWvxKOYQ=b literal 29634 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 diff --git a/llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux64l b/llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux64l index af4d39cedfbfcee271d7a35ed250138463be4f77..9c6835cdff1ba9537f01cc6a7b2ddfc09523b6cd 100755 GIT binary patch delta 16890 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 T=ANZ$RexkPu@4`Mp!|OT`HxW< delta 16650 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 T FOO::DoIt(T ti) { // HEADER: 2| [[@LINE]]|template t += I; // HEADER: 20| [[@LINE]]| t += I; if (I > ti / 2) // HEADER: 20| [[@LINE]]| if (I > ti t -= 1; // HEADER: 8| [[@LINE]]| t -= 1; - } // HEADER: 10| [[@LINE]]| } - // HEADER: 1| [[@LINE]]| - return t; // HEADER: 1| [[@LINE]]| return t; + } // HEADER: 20| [[@LINE]]| } + // HEADER: 2| [[@LINE]]| + return t; // HEADER: 2| [[@LINE]]| return t; } + +// To generate the binaries which correspond to this file, you must first +// compile a program with two calls to Foo::DoIt(10) for each desired +// architecture. Collect a raw profile from any one of these binaries, index +// it, and check it in along with the executables. diff --git a/llvm/test/tools/llvm-profdata/Inputs/c-general.profraw b/llvm/test/tools/llvm-profdata/Inputs/c-general.profraw index 602838369a25600c4b307023867eb9e8a0da0e4c..34448c17b7066ab8495f22098fc33833dab8efd3 100644 GIT binary patch delta 363 zcmZ3$`+;YIf@lc?1ng-1!@&q-CbR?TiKg1TFaZH4kU*|7?+vJm17Lx<%De_m5G@8S zAQfkoc`Kj-4Xz-8zskHC%@7q2+=29DT}EZz15gnMFOWzqP{gAJqGo~*NTe4i(g77I z@B@kL1&UmNiZ}#-MBV~LUO+`2fJJ1PlzBN?A?7p$g4Fl|MFgNCA3!3TYnf`9%L*%Q zrS=5!F&T2O9&Y@?5ZAULcH7Z_46fd)YV%n?9zWkxIdg*Dl)$_04u!W>kM^20WWM75 zsVP|y|M$wr2|B&ZW-EWN-ncXM@C1^@s6 delta 412 zcmZY1yGq1B6b9gNZFh7LMezayDJ*2g#zrji0>XM}C7I36CL@!XkeQ$siRv(N%Ut3Jpb zNY6>VX5|&+(aCh($|uOgNw#5StL5RT6S8UL2;{>_Y2{_q8qMDz&C^V> %t RUN: printf '\0\0\0\0\0\0\0\023' >> %t RUN: printf '\0\0\0\0\0\0\0\067' >> %t RUN: printf '\0\0\0\0\0\0\0\101' >> %t -RUN: printf '\7\0foo bar\0\0\0\0\0\0\0' >> %t +RUN: printf '\7\0foo\1bar\0\0\0\0\0\0\0' >> %t RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s diff --git a/llvm/test/tools/llvm-profdata/raw-32-bits-le.test b/llvm/test/tools/llvm-profdata/raw-32-bits-le.test index b19c74f..5ee8b33 100644 --- a/llvm/test/tools/llvm-profdata/raw-32-bits-le.test +++ b/llvm/test/tools/llvm-profdata/raw-32-bits-le.test @@ -28,7 +28,7 @@ RUN: printf '\0\0\0\0\0\0\0\0' >> %t RUN: printf '\023\0\0\0\0\0\0\0' >> %t RUN: printf '\067\0\0\0\0\0\0\0' >> %t RUN: printf '\101\0\0\0\0\0\0\0' >> %t -RUN: printf '\7\0foo bar\0\0\0\0\0\0\0' >> %t +RUN: printf '\7\0foo\1bar\0\0\0\0\0\0\0' >> %t RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s diff --git a/llvm/test/tools/llvm-profdata/raw-64-bits-be.test b/llvm/test/tools/llvm-profdata/raw-64-bits-be.test index cb59f9a..9778f06 100644 --- a/llvm/test/tools/llvm-profdata/raw-64-bits-be.test +++ b/llvm/test/tools/llvm-profdata/raw-64-bits-be.test @@ -26,7 +26,7 @@ RUN: printf '\0\0\0\02\0\0\0\0' >> %t RUN: printf '\0\0\0\0\0\0\0\023' >> %t RUN: printf '\0\0\0\0\0\0\0\067' >> %t RUN: printf '\0\0\0\0\0\0\0\101' >> %t -RUN: printf '\7\0foo bar\0\0\0\0\0\0\0' >> %t +RUN: printf '\7\0foo\1bar\0\0\0\0\0\0\0' >> %t RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s diff --git a/llvm/test/tools/llvm-profdata/raw-64-bits-le.test b/llvm/test/tools/llvm-profdata/raw-64-bits-le.test index 86748b1..670bdb3 100644 --- a/llvm/test/tools/llvm-profdata/raw-64-bits-le.test +++ b/llvm/test/tools/llvm-profdata/raw-64-bits-le.test @@ -26,7 +26,7 @@ RUN: printf '\02\0\0\0\0\0\0\0' >> %t RUN: printf '\023\0\0\0\0\0\0\0' >> %t RUN: printf '\067\0\0\0\0\0\0\0' >> %t RUN: printf '\101\0\0\0\0\0\0\0' >> %t -RUN: printf '\7\0foo bar\0\0\0\0\0\0\0' >> %t +RUN: printf '\7\0foo\1bar\0\0\0\0\0\0\0' >> %t RUN: llvm-profdata show %t -all-functions -counts | FileCheck %s diff --git a/llvm/unittests/ProfileData/InstrProfTest.cpp b/llvm/unittests/ProfileData/InstrProfTest.cpp index 13d1e05..7dd072c 100644 --- a/llvm/unittests/ProfileData/InstrProfTest.cpp +++ b/llvm/unittests/ProfileData/InstrProfTest.cpp @@ -893,7 +893,7 @@ TEST_P(MaybeSparseInstrProfTest, instr_prof_symtab_compression_test) { OS << "func_" << I; FuncNames1.push_back(OS.str()); str.clear(); - OS << "fooooooooooooooo_" << I; + OS << "f oooooooooooooo_" << I; FuncNames1.push_back(OS.str()); str.clear(); OS << "BAR_" << I; @@ -931,7 +931,7 @@ TEST_P(MaybeSparseInstrProfTest, instr_prof_symtab_compression_test) { StringRef R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[0])); ASSERT_EQ(StringRef("func_0"), R); R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[1])); - ASSERT_EQ(StringRef("fooooooooooooooo_0"), R); + ASSERT_EQ(StringRef("f oooooooooooooo_0"), R); for (int I = 0; I < 3; I++) { std::string N[4]; N[0] = FuncNames1[2 * I]; -- 2.7.4