[llvm] [ctx_prof] CtxProfAnalysis: populate module data (PR #102930)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 12 14:35:13 PDT 2024
================
@@ -9,23 +9,38 @@
#ifndef LLVM_ANALYSIS_CTXPROFANALYSIS_H
#define LLVM_ANALYSIS_CTXPROFANALYSIS_H
+#include "llvm/ADT/StringMap.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/PassManager.h"
#include "llvm/ProfileData/PGOCtxProfReader.h"
-#include <map>
namespace llvm {
class CtxProfAnalysis;
/// The instrumented contextual profile, produced by the CtxProfAnalysis.
class PGOContextualProfile {
+ friend class CtxProfAnalysis;
+ friend class CtxProfAnalysisPrinterPass;
+ struct FunctionInfo {
+ uint32_t NextCounterIndex = 0;
+ uint32_t NextCallsiteIndex = 0;
+ const std::string Name;
+
+ FunctionInfo(StringRef Name) : Name(Name) {}
+ };
std::optional<PGOCtxProfContext::CallTargetMapTy> Profiles;
+ // For the GUIDs in this module, associate metadata about each function which
+ // we'll need when we maintain the profiles during IPO transformations.
+ DenseMap<GlobalValue::GUID, FunctionInfo> FuncInfo;
-public:
- explicit PGOContextualProfile(PGOCtxProfContext::CallTargetMapTy &&Profiles)
- : Profiles(std::move(Profiles)) {}
+ GlobalValue::GUID getKnownGUID(const Function &F) const;
----------------
snehasish wrote:
Prefer `getGUID(...)` and document it returns zero if unknown and also define what it means to be `known`?
https://github.com/llvm/llvm-project/pull/102930
More information about the llvm-commits
mailing list