[llvm] [SampleFDO] Stale profile call-graph matching (PR #95135)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 24 13:32:27 PDT 2024
================
@@ -151,15 +214,35 @@ 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);
+ Function *findIfFunctionIsNew(const FunctionId &IRFuncName);
+ bool isProfileUnused(const FunctionId &ProfileFuncName);
+ bool functionMatchesProfileHelper(const Function &IRFunc,
+ const FunctionId &ProfFunc);
+ // Determine if the function matches profile. If FindMatchedProfileOnly is
+ // set, only search the existing matched function. Otherwise, try matching the
+ // two functions.
+ bool functionMatchesProfile(const FunctionId &IRFuncName,
+ const FunctionId &ProfileFuncName,
+ bool FindMatchedProfileOnly);
+ // Determine if the function matches profile by computing a similarity ratio
+ // between two callsite anchors extracted from function and profile. If it's
----------------
WenleiHe wrote:
nit: `two callsite anchors` -> `two sequences of callsite anchors`
https://github.com/llvm/llvm-project/pull/95135
More information about the llvm-commits
mailing list