[llvm] [SDP] Add statistics for global variable annotations (PR #223117)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 20:16:14 PDT 2026
https://github.com/boomanaiden154 created https://github.com/llvm/llvm-project/pull/223117
To debug profile quality problems.
>From 3ba39f75b670e25c23811e7d42b2f0ada34b98f5 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 12 Sep 2026 03:15:34 +0000
Subject: [PATCH] [SDP] Add statistics for global variable annotations
To debug profile quality problems.
---
llvm/lib/Analysis/StaticDataProfileInfo.cpp | 38 +++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/llvm/lib/Analysis/StaticDataProfileInfo.cpp b/llvm/lib/Analysis/StaticDataProfileInfo.cpp
index 5bc85173e0ea5e..e33dfe22b030d4 100644
--- a/llvm/lib/Analysis/StaticDataProfileInfo.cpp
+++ b/llvm/lib/Analysis/StaticDataProfileInfo.cpp
@@ -1,4 +1,5 @@
#include "llvm/Analysis/StaticDataProfileInfo.h"
+#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
@@ -59,6 +60,25 @@ bool IsAnnotationOK(const GlobalVariable &GV) {
} // namespace memprof
} // namespace llvm
+STATISTIC(NumStaticDataHotFromPGOAndDAP,
+ "Number of global variables annotated as hot because PGO and DAP "
+ "data list them as hot.");
+STATISTIC(
+ NumStaticDataHotFromPGO,
+ "Number of global variables annotated as hot only because of PGO data");
+STATISTIC(NumStaticDataHotFromDAP,
+ "Number of global variables annotated as hot only because DAP data");
+STATISTIC(NumStaticDataLukewarmOrNoneFromPGOAndDAP,
+ "Number of global variables annotated as lukewarm/unknown because "
+ "PGO and DAP data both list them as lukewarm/unknown.");
+STATISTIC(NumStaticDataLukewarmOrNoneFromPGO,
+ "Number of global variables annotated as lukewarm/unknown only "
+ "because of PGO data");
+STATISTIC(NumStaticDataLukewarmOrNoneFromDAP,
+ "Number of global variables annotated as lukewarm/unknown only "
+ "because of DAP data");
+STATISTIC(NumStaticDataCold, "Number of global variables annotated as cold");
+
void StaticDataProfileInfo::addConstantProfileCount(
const Constant *C, std::optional<uint64_t> Count) {
if (!Count) {
@@ -166,12 +186,30 @@ StringRef StaticDataProfileInfo::getConstantSectionPrefix(
if (HotnessFromDataAccessProf == StaticDataHotness::Hot ||
HotnessFromPGO == StaticDataHotness::Hot) {
GlobalVarHotness = StaticDataHotness::Hot;
+ if (HotnessFromDataAccessProf == StaticDataHotness::Hot &&
+ HotnessFromPGO == StaticDataHotness::Hot) {
+ ++NumStaticDataHotFromPGOAndDAP;
+ } else if (HotnessFromPGO == StaticDataHotness::Hot) {
+ ++NumStaticDataHotFromPGO;
+ } else if (HotnessFromDataAccessProf == StaticDataHotness::Hot) {
+ ++NumStaticDataHotFromDAP;
+ }
} else if (HotnessFromDataAccessProf ==
StaticDataHotness::LukewarmOrUnknown ||
HotnessFromPGO == StaticDataHotness::LukewarmOrUnknown) {
GlobalVarHotness = StaticDataHotness::LukewarmOrUnknown;
+ if (HotnessFromDataAccessProf == StaticDataHotness::LukewarmOrUnknown &&
+ HotnessFromPGO == StaticDataHotness::LukewarmOrUnknown) {
+ ++NumStaticDataLukewarmOrNoneFromPGOAndDAP;
+ } else if (HotnessFromPGO == StaticDataHotness::LukewarmOrUnknown) {
+ ++NumStaticDataLukewarmOrNoneFromPGO;
+ } else if (HotnessFromDataAccessProf ==
+ StaticDataHotness::LukewarmOrUnknown) {
+ ++NumStaticDataLukewarmOrNoneFromDAP;
+ }
} else {
GlobalVarHotness = StaticDataHotness::Cold;
+ ++NumStaticDataCold;
}
StringRef Prefix = hotnessToStr(GlobalVarHotness);
LLVM_DEBUG(
More information about the llvm-commits
mailing list