diff options
-rw-r--r-- | llvm/lib/ProfileData/InstrProf.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp index 544a77ec20a..aaa8000ff2f 100644 --- a/llvm/lib/ProfileData/InstrProf.cpp +++ b/llvm/lib/ProfileData/InstrProf.cpp @@ -252,11 +252,12 @@ static StringRef stripDirPrefix(StringRef PathNameStr, uint32_t NumPrefix) { // data, its original linkage must be non-internal. std::string getPGOFuncName(const Function &F, bool InLTO, uint64_t Version) { if (!InLTO) { - StringRef FileName = (StaticFuncFullModulePrefix - ? F.getParent()->getName() - : sys::path::filename(F.getParent()->getName())); - if (StaticFuncFullModulePrefix && StaticFuncStripDirNamePrefix != 0) - FileName = stripDirPrefix(FileName, StaticFuncStripDirNamePrefix); + StringRef FileName(F.getParent()->getSourceFileName()); + uint32_t StripLevel = StaticFuncFullModulePrefix ? 0 : (uint32_t)-1; + if (StripLevel < StaticFuncStripDirNamePrefix) + StripLevel = StaticFuncStripDirNamePrefix; + if (StripLevel) + FileName = stripDirPrefix(FileName, StripLevel); return getPGOFuncName(F.getName(), F.getLinkage(), FileName, Version); } |