1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00

Coverage code refactoring /NFC

llvm-svn: 255670
This commit is contained in:
Xinliang David Li 2015-12-15 19:44:45 +00:00
parent 621a2ef540
commit 4bfffacc8b
3 changed files with 18 additions and 13 deletions

View File

@ -156,6 +156,10 @@ GlobalVariable *createPGOFuncNameVar(Module &M,
GlobalValue::LinkageTypes Linkage,
StringRef FuncName);
/// Given a PGO function name, remove the filename prefix and return
/// the original (static) function name.
StringRef getFuncNameWithoutPrefix(StringRef PGOFuncName, StringRef FileName);
const std::error_category &instrprof_category();
enum class instrprof_error {

View File

@ -181,18 +181,6 @@ 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) {
@ -216,7 +204,11 @@ CoverageMapping::load(CoverageMappingReader &CoverageReader,
assert(!Record.MappingRegions.empty() && "Function has no regions");
FunctionRecord Function(getFuncNameWithoutPrefix(Record), Record.Filenames);
StringRef OrigFuncName = Record.FunctionName;
if (!Record.Filenames.empty())
OrigFuncName =
getFuncNameWithoutPrefix(OrigFuncName, Record.Filenames[0]);
FunctionRecord Function(OrigFuncName, Record.Filenames);
for (const auto &Region : Record.MappingRegions) {
ErrorOr<int64_t> ExecutionCount = Ctx.evaluate(Region.Count);
if (!ExecutionCount)

View File

@ -102,6 +102,15 @@ std::string getPGOFuncName(const Function &F, uint64_t Version) {
Version);
}
StringRef getFuncNameWithoutPrefix(StringRef PGOFuncName, StringRef FileName) {
if (FileName.empty())
return PGOFuncName;
// Drop the file name including ':'. See also getPGOFuncName.
if (PGOFuncName.startswith(FileName))
PGOFuncName = PGOFuncName.drop_front(FileName.size() + 1);
return PGOFuncName;
}
// \p FuncName is the string used as profile lookup key for the function. A
// symbol is created to hold the name. Return the legalized symbol name.
static std::string getPGOFuncNameVarName(StringRef FuncName,