mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 04:09:45 +00:00
InstrProf: Strip filename prefixes from the names we display for coverage
For consumers of coverage data, any filename prefixes we store in the profile data are just noise. Strip this prefix if it exists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236558 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9fb69672d6
commit
730ddb6f57
@ -20,6 +20,7 @@
|
||||
#include "llvm/ProfileData/InstrProfReader.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
using namespace llvm;
|
||||
@ -178,6 +179,18 @@ void FunctionRecordIterator::skipOtherFiles() {
|
||||
*this = FunctionRecordIterator();
|
||||
}
|
||||
|
||||
/// Get the function name from the record, removing the filename prefix if
|
||||
/// necessary.
|
||||
static StringRef getFuncNameWithoutPrefix(const CoverageMappingRecord &Record) {
|
||||
StringRef FunctionName = Record.FunctionName;
|
||||
if (Record.Filenames.empty())
|
||||
return FunctionName;
|
||||
StringRef Filename = sys::path::filename(Record.Filenames[0]);
|
||||
if (FunctionName.startswith(Filename))
|
||||
FunctionName = FunctionName.drop_front(Filename.size() + 1);
|
||||
return FunctionName;
|
||||
}
|
||||
|
||||
ErrorOr<std::unique_ptr<CoverageMapping>>
|
||||
CoverageMapping::load(CoverageMappingReader &CoverageReader,
|
||||
IndexedInstrProfReader &ProfileReader) {
|
||||
@ -199,7 +212,8 @@ CoverageMapping::load(CoverageMappingReader &CoverageReader,
|
||||
Ctx.setCounts(Counts);
|
||||
|
||||
assert(!Record.MappingRegions.empty() && "Function has no regions");
|
||||
FunctionRecord Function(Record.FunctionName, Record.Filenames);
|
||||
|
||||
FunctionRecord Function(getFuncNameWithoutPrefix(Record), Record.Filenames);
|
||||
for (const auto &Region : Record.MappingRegions) {
|
||||
ErrorOr<int64_t> ExecutionCount = Ctx.evaluate(Region.Count);
|
||||
if (!ExecutionCount)
|
||||
|
@ -259,4 +259,18 @@ TEST_F(CoverageMappingTest, dont_combine_expansions) {
|
||||
ASSERT_EQ(CoverageSegment(9, 9, false), Segments[3]);
|
||||
}
|
||||
|
||||
TEST_F(CoverageMappingTest, strip_filename_prefix) {
|
||||
ProfileWriter.addFunctionCounts("file1:func", 0x1234, {10});
|
||||
readProfCounts();
|
||||
|
||||
addCMR(Counter::getCounter(0), "file1", 1, 1, 9, 9);
|
||||
loadCoverageMapping("file1:func", 0x1234);
|
||||
|
||||
std::vector<std::string> Names;
|
||||
for (const auto &Func : LoadedCoverage->getCoveredFunctions())
|
||||
Names.push_back(Func.Name);
|
||||
ASSERT_EQ(1U, Names.size());
|
||||
ASSERT_EQ("func", Names[0]);
|
||||
}
|
||||
|
||||
} // end anonymous namespace
|
||||
|
Loading…
Reference in New Issue
Block a user