[llvm] [SampleFDO] Stale profile call-graph matching (PR #95135)
David Li via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 12 15:07:54 PDT 2024
================
@@ -151,15 +204,32 @@ class SampleProfileMatcher {
// parts from the resulting SES are used to remap the IR locations to the
// profile locations. As the number of function callsite is usually not big,
// we currently just implements the basic greedy version(page 6 of the paper).
- LocToLocMap
- longestCommonSequence(const AnchorList &IRCallsiteAnchors,
- const AnchorList &ProfileCallsiteAnchors) const;
+ LocToLocMap longestCommonSequence(const AnchorList &IRCallsiteAnchors,
+ const AnchorList &ProfileCallsiteAnchors,
+ bool MatchUnusedFunction);
void matchNonCallsiteLocs(const LocToLocMap &AnchorMatchings,
const AnchorMap &IRAnchors,
LocToLocMap &IRToProfileLocationMap);
void runStaleProfileMatching(const Function &F, const AnchorMap &IRAnchors,
const AnchorMap &ProfileAnchors,
- LocToLocMap &IRToProfileLocationMap);
+ LocToLocMap &IRToProfileLocationMap,
+ bool RunCFGMatching, bool RunCGMatching);
+ bool functionMatchesProfileHelper(const Function &IRFunc,
+ const FunctionId &ProfFunc);
+ // Determine if the function matches profile by computing a similarity ratio
+ // between two callsite anchors extracted from function and profile. If it's
+ // above the threshold, the function matches the profile.
+ bool functionMatchesProfile(Function &IRFunc, const FunctionId &ProfFunc,
+ bool FindMatchedProfileOnly);
+ void matchProfileForNewFunctions(const StringMap<Function *> &NewIRFunctions,
+ FunctionSamples &FS);
+ // Find functions that don't show in the profile or profile symbol list,
+ // which are supposed to be new functions. We use them as the targets for
+ // renaming matching.
+ void findNewIRFunctions();
+ void updateProfillesAndSymbolMap();
----------------
david-xl wrote:
Is there a typo in the Profilles?
https://github.com/llvm/llvm-project/pull/95135
More information about the llvm-commits
mailing list