<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 27, 2016 at 6:16 PM, Vedant Kumar via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: vedantk<br>
Date: Sun Mar 27 20:16:12 2016<br>
New Revision: 264559<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=264559&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=264559&view=rev</a><br>
Log:<br>
[Coverage] Fix the way we load "<unknown>:func" records<br>
<br>
When emitting coverage mappings for functions with local linkage and an<br>
unknown filename, we use "<unknown>:func" for the PGO function name. The<br>
problem is that we don't strip "<unknown>" from the name when loading<br>
coverage data, like we do for other file names. Fix that and add a test.<br>
<br>
Modified:<br>
    llvm/trunk/lib/ProfileData/InstrProf.cpp<br>
    llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp<br>
<br>
Modified: llvm/trunk/lib/ProfileData/InstrProf.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProf.cpp?rev=264559&r1=264558&r2=264559&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProf.cpp?rev=264559&r1=264558&r2=264559&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/ProfileData/InstrProf.cpp (original)<br>
+++ llvm/trunk/lib/ProfileData/InstrProf.cpp Sun Mar 27 20:16:12 2016<br>
@@ -90,7 +90,7 @@ std::string getPGOFuncName(const Functio<br>
<br>
 StringRef getFuncNameWithoutPrefix(StringRef PGOFuncName, StringRef FileName) {<br>
   if (FileName.empty())<br>
-    return PGOFuncName;<br>
+    FileName = "<unknown>";<br></blockquote><div><br></div><div>How about making getFuncNameWithoutPrefix take a default FileName parameter with "<unknown>" value?</div><div><br></div><div>David</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
   // Drop the file name including ':'. See also getPGOFuncName.<br>
   if (PGOFuncName.startswith(FileName))<br>
     PGOFuncName = PGOFuncName.drop_front(FileName.size() + 1);<br>
<br>
Modified: llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp?rev=264559&r1=264558&r2=264559&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp?rev=264559&r1=264558&r2=264559&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp (original)<br>
+++ llvm/trunk/unittests/ProfileData/CoverageMappingTest.cpp Sun Mar 27 20:16:12 2016<br>
@@ -304,6 +304,21 @@ TEST_P(MaybeSparseCoverageMappingTest, s<br>
   ASSERT_EQ("func", Names[0]);<br>
 }<br>
<br>
+TEST_P(MaybeSparseCoverageMappingTest, strip_unknown_filename_prefix) {<br>
+  InstrProfRecord Record("<unknown>:func", 0x1234, {0});<br>
+  ProfileWriter.addRecord(std::move(Record));<br>
+  readProfCounts();<br>
+<br>
+  addCMR(Counter::getCounter(0), "", 1, 1, 9, 9);<br>
+  loadCoverageMapping("<unknown>:func", 0x1234);<br>
+<br>
+  std::vector<std::string> Names;<br>
+  for (const auto &Func : LoadedCoverage->getCoveredFunctions())<br>
+    Names.push_back(Func.Name);<br>
+  ASSERT_EQ(1U, Names.size());<br>
+  ASSERT_EQ("func", Names[0]);<br>
+}<br>
+<br>
 INSTANTIATE_TEST_CASE_P(MaybeSparse, MaybeSparseCoverageMappingTest,<br>
                         ::testing::Bool());<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>