[llvm] [llvm-profdata][StaticDataLayout] Print summary of data access profiles in llvm-profdata (PR #173087)
Mingming Liu via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 19 12:21:58 PST 2025
https://github.com/mingmingl-llvm updated https://github.com/llvm/llvm-project/pull/173087
>From 0f0281dfbbe0de70d8879ecfa6f59418dde11a2b Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Fri, 19 Dec 2025 10:39:31 -0800
Subject: [PATCH 1/4] [llvm-profdata][StaticDataLayout] Print summary of data
access profile in llvm-profdata
---
.../include/llvm/ProfileData/MemProfSummary.h | 14 ++++++++-
llvm/lib/ProfileData/IndexedMemProfData.cpp | 20 +++++++------
llvm/lib/ProfileData/MemProfSummary.cpp | 22 +++++++++++++-
llvm/test/Transforms/PGOProfile/memprof.ll | 2 +-
.../memprof_max_cold_threshold.test | 2 +-
.../tools/llvm-profdata/memprof-yaml.test | 30 ++++++++++++-------
llvm/tools/llvm-profdata/llvm-profdata.cpp | 3 ++
7 files changed, 70 insertions(+), 23 deletions(-)
diff --git a/llvm/include/llvm/ProfileData/MemProfSummary.h b/llvm/include/llvm/ProfileData/MemProfSummary.h
index 8bf6155bd43e5..3f426ad48cf94 100644
--- a/llvm/include/llvm/ProfileData/MemProfSummary.h
+++ b/llvm/include/llvm/ProfileData/MemProfSummary.h
@@ -13,6 +13,7 @@
#ifndef LLVM_PROFILEDATA_MEMPROFSUMMARY_H
#define LLVM_PROFILEDATA_MEMPROFSUMMARY_H
+#include "llvm/ProfileData/DataAccessProf.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/Compiler.h"
@@ -32,13 +33,20 @@ class MemProfSummary {
const uint64_t NumContexts, NumColdContexts, NumHotContexts;
const uint64_t MaxColdTotalSize, MaxWarmTotalSize, MaxHotTotalSize;
+ // MemProf v3 and prior versions don't have data access profile.
+ bool HasDataAccessProfile = false;
+ size_t NumHotSymbolsAndStringLiterals = 0;
+ size_t NumKnownColdSymbols = 0;
+ size_t NumKnownColdStringLiterals = 0;
+
public:
MemProfSummary(uint64_t NumContexts, uint64_t NumColdContexts,
uint64_t NumHotContexts, uint64_t MaxColdTotalSize,
uint64_t MaxWarmTotalSize, uint64_t MaxHotTotalSize)
: NumContexts(NumContexts), NumColdContexts(NumColdContexts),
NumHotContexts(NumHotContexts), MaxColdTotalSize(MaxColdTotalSize),
- MaxWarmTotalSize(MaxWarmTotalSize), MaxHotTotalSize(MaxHotTotalSize) {}
+ MaxWarmTotalSize(MaxWarmTotalSize), MaxHotTotalSize(MaxHotTotalSize),
+ HasDataAccessProfile(false) {}
static constexpr unsigned getNumSummaryFields() { return NumSummaryFields; }
uint64_t getNumContexts() const { return NumContexts; }
@@ -53,6 +61,10 @@ class MemProfSummary {
/// Read from indexed MemProf profile.
LLVM_ABI static std::unique_ptr<MemProfSummary>
deserialize(const unsigned char *&);
+ /// Build data access profile summary from \p DataAccessProfile.
+ /// The pointer is not owned.
+ LLVM_ABI void
+ buildDataAccessSummary(const DataAccessProfData &DataAccessProfile);
};
} // namespace memprof
diff --git a/llvm/lib/ProfileData/IndexedMemProfData.cpp b/llvm/lib/ProfileData/IndexedMemProfData.cpp
index 04ddae357ddd7..18b25eadc296a 100644
--- a/llvm/lib/ProfileData/IndexedMemProfData.cpp
+++ b/llvm/lib/ProfileData/IndexedMemProfData.cpp
@@ -407,8 +407,19 @@ Error IndexedMemProfReader::deserializeRadixTreeBased(
DataAccessProfOffset =
support::endian::readNext<uint64_t, llvm::endianness::little>(Ptr);
MemProfSum = memprof::MemProfSummary::deserialize(Ptr);
+
+ if (DataAccessProfOffset > RecordTableOffset) {
+ DataAccessProfileData = std::make_unique<memprof::DataAccessProfData>();
+ const unsigned char *DAPPtr = Start + DataAccessProfOffset;
+ if (Error E = DataAccessProfileData->deserialize(DAPPtr))
+ return E;
+ MemProfSum->buildDataAccessSummary(*DataAccessProfileData);
+ }
}
+ assert((!DataAccessProfOffset || DataAccessProfOffset > RecordTableOffset) &&
+ "Data access profile is either empty or after the record table");
+
// Read the schema.
auto SchemaOr = memprof::readMemProfSchema(Ptr);
if (!SchemaOr)
@@ -430,15 +441,6 @@ Error IndexedMemProfReader::deserializeRadixTreeBased(
/*Payload=*/Start + RecordPayloadOffset,
/*Base=*/Start, memprof::RecordLookupTrait(Version, Schema)));
- assert((!DataAccessProfOffset || DataAccessProfOffset > RecordTableOffset) &&
- "Data access profile is either empty or after the record table");
- if (DataAccessProfOffset > RecordTableOffset) {
- DataAccessProfileData = std::make_unique<memprof::DataAccessProfData>();
- const unsigned char *DAPPtr = Start + DataAccessProfOffset;
- if (Error E = DataAccessProfileData->deserialize(DAPPtr))
- return E;
- }
-
return Error::success();
}
diff --git a/llvm/lib/ProfileData/MemProfSummary.cpp b/llvm/lib/ProfileData/MemProfSummary.cpp
index f620b7a74b244..285340b5ced38 100644
--- a/llvm/lib/ProfileData/MemProfSummary.cpp
+++ b/llvm/lib/ProfileData/MemProfSummary.cpp
@@ -18,13 +18,22 @@ using namespace llvm::memprof;
void MemProfSummary::printSummaryYaml(raw_ostream &OS) const {
// For now emit as YAML comments, since they aren't read on input.
OS << "---\n";
- OS << "# MemProfSummary:\n";
+ OS << "# MemProfHeapSummary:\n";
OS << "# Total contexts: " << NumContexts << "\n";
OS << "# Total cold contexts: " << NumColdContexts << "\n";
OS << "# Total hot contexts: " << NumHotContexts << "\n";
OS << "# Maximum cold context total size: " << MaxColdTotalSize << "\n";
OS << "# Maximum warm context total size: " << MaxWarmTotalSize << "\n";
OS << "# Maximum hot context total size: " << MaxHotTotalSize << "\n";
+ if (HasDataAccessProfile) {
+ OS << "#\n";
+ OS << "# DataAccessProfileSummary:\n";
+ OS << "# Num hot symbols and string literals: "
+ << NumHotSymbolsAndStringLiterals << "\n";
+ OS << "# Num known cold symbols: " << NumKnownColdSymbols << "\n";
+ OS << "# Num known cold string literals: " << NumKnownColdStringLiterals
+ << "\n";
+ }
}
void MemProfSummary::write(ProfOStream &OS) const {
@@ -72,3 +81,14 @@ MemProfSummary::deserialize(const unsigned char *&Ptr) {
return MemProfSum;
}
+
+// FIXME: Consider to serialize the data access summary fields, ideally
+// batch this together with more substantial profile format change
+// and bump version once.
+void MemProfSummary::buildDataAccessSummary(
+ const DataAccessProfData &DataAccessProfile) {
+ HasDataAccessProfile = true;
+ NumHotSymbolsAndStringLiterals = DataAccessProfile.getRecords().size();
+ NumKnownColdSymbols = DataAccessProfile.getKnownColdSymbols().size();
+ NumKnownColdStringLiterals = DataAccessProfile.getKnownColdHashes().size();
+}
diff --git a/llvm/test/Transforms/PGOProfile/memprof.ll b/llvm/test/Transforms/PGOProfile/memprof.ll
index f6a89a8ceb86a..00175b2f3984c 100644
--- a/llvm/test/Transforms/PGOProfile/memprof.ll
+++ b/llvm/test/Transforms/PGOProfile/memprof.ll
@@ -23,7 +23,7 @@
;; Check that the summary can be shown (and is identical) for both the raw and indexed profiles.
; RUN: llvm-profdata show --memory %S/Inputs/memprof.memprofraw --profiled-binary %S/Inputs/memprof.exe | FileCheck %s --check-prefixes=SUMMARY
; RUN: llvm-profdata show --memory %t.memprofdata | FileCheck %s --check-prefixes=SUMMARY
-; SUMMARY: # MemProfSummary:
+; SUMMARY: # MemProfHeapSummary:
; SUMMARY: # Total contexts: 8
; SUMMARY: # Total cold contexts: 5
; SUMMARY: # Total hot contexts: 0
diff --git a/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test b/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
index 8f1cabf9a4e87..d1dcc86eac8e8 100644
--- a/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
+++ b/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
@@ -9,7 +9,7 @@
; RUN: llvm-profdata merge --memprof-version=4 %t/memprof_max_cold_threshold.yaml -o %t/memprof_max_cold_threshold.memprofdata
; RUN: llvm-profdata show --memory %t/memprof_max_cold_threshold.memprofdata | FileCheck %s --check-prefixes=SUMMARY
-; SUMMARY: # MemProfSummary:
+; SUMMARY: # MemProfHeapSummary:
; SUMMARY: # Total contexts: 5
; SUMMARY: # Total cold contexts: 4
; SUMMARY: # Total hot contexts: 0
diff --git a/llvm/test/tools/llvm-profdata/memprof-yaml.test b/llvm/test/tools/llvm-profdata/memprof-yaml.test
index 6fbfbdb507f27..61722989c7bd1 100644
--- a/llvm/test/tools/llvm-profdata/memprof-yaml.test
+++ b/llvm/test/tools/llvm-profdata/memprof-yaml.test
@@ -37,13 +37,18 @@
;--- memprof-in.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
# Maximum cold context total size: 0
# Maximum warm context total size: 666
# Maximum hot context total size: 0
+#
+# DataAccessProfileSummary:
+# Num hot symbols and string literals: 2
+# Num known cold symbols: 2
+# Num known cold string literals: 2
---
HeapProfileRecords:
- GUID: 0xdeadbeef12345678
@@ -79,7 +84,7 @@ DataAccessProfiles:
AccessCount: 100
Locations:
- FileName: file2.h
- Line: 123
+ Line: 202
- FileName: file3.cpp
Line: 456
- Hash: 101010
@@ -88,13 +93,13 @@ DataAccessProfiles:
- FileName: file.cpp
Line: 233
KnownColdSymbols:
- - foo
- bar
+ - foo
KnownColdStrHashes: [ 999, 1001 ]
...
;--- memprof-in-v3.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -131,7 +136,7 @@ HeapProfileRecords:
...
;--- memprof-in-alloc-sites-only.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -161,7 +166,7 @@ HeapProfileRecords:
...
;--- memprof-in-call-sites-only.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 0
# Total cold contexts: 0
# Total hot contexts: 0
@@ -183,7 +188,7 @@ HeapProfileRecords:
...
;--- memprof-in-no-dap.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -222,18 +227,23 @@ HeapProfileRecords:
...
;--- memprof-in-no-heap.yaml
---
-# MemProfSummary:
+# MemProfHeapSummary:
# Total contexts: 0
# Total cold contexts: 0
# Total hot contexts: 0
# Maximum cold context total size: 0
# Maximum warm context total size: 0
# Maximum hot context total size: 0
+#
+# DataAccessProfileSummary:
+# Num hot symbols and string literals: 2
+# Num known cold symbols: 2
+# Num known cold string literals: 2
---
DataAccessProfiles:
SampledRecords:
- Symbol: abcde
- AccessCount: 100
+ AccessCount: 202
Locations:
- FileName: file2.h
Line: 123
@@ -245,7 +255,7 @@ DataAccessProfiles:
- FileName: file.cpp
Line: 233
KnownColdSymbols:
- - foo
- bar
+ - foo
KnownColdStrHashes: [ 999, 1001 ]
...
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index e186c5a198027..5db7ef1b4ad30 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -3323,6 +3323,9 @@ static int showMemProfProfile(ShowFormat SFormat, raw_fd_ostream &OS) {
// be accessed from the reader. Earlier versions build the summary below.
// The summary is emitted as YAML comments at the start of the output.
if (auto *MemProfSum = Reader->getMemProfSummary()) {
+ // errs() << "llvm-profdata.cpp find memprof summary\n";
+ // fflush(stdout);
+ // fflush(stderr);
MemProfSum->printSummaryYaml(OS);
} else {
memprof::MemProfSummaryBuilder MemProfSumBuilder;
>From 175504d89ed4551928aefd3c259ad3944e70fb75 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Fri, 19 Dec 2025 11:20:29 -0800
Subject: [PATCH 2/4] excessive logs
---
llvm/tools/llvm-profdata/llvm-profdata.cpp | 3 ---
1 file changed, 3 deletions(-)
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index 5db7ef1b4ad30..e186c5a198027 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -3323,9 +3323,6 @@ static int showMemProfProfile(ShowFormat SFormat, raw_fd_ostream &OS) {
// be accessed from the reader. Earlier versions build the summary below.
// The summary is emitted as YAML comments at the start of the output.
if (auto *MemProfSum = Reader->getMemProfSummary()) {
- // errs() << "llvm-profdata.cpp find memprof summary\n";
- // fflush(stdout);
- // fflush(stderr);
MemProfSum->printSummaryYaml(OS);
} else {
memprof::MemProfSummaryBuilder MemProfSumBuilder;
>From fe5c2447f2f8bd775bb8fb09bf88424b8331b842 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Fri, 19 Dec 2025 11:30:12 -0800
Subject: [PATCH 3/4] undo irrelevant test data change
---
llvm/test/tools/llvm-profdata/memprof-yaml.test | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/llvm/test/tools/llvm-profdata/memprof-yaml.test b/llvm/test/tools/llvm-profdata/memprof-yaml.test
index 61722989c7bd1..de7cb65067d2f 100644
--- a/llvm/test/tools/llvm-profdata/memprof-yaml.test
+++ b/llvm/test/tools/llvm-profdata/memprof-yaml.test
@@ -84,7 +84,7 @@ DataAccessProfiles:
AccessCount: 100
Locations:
- FileName: file2.h
- Line: 202
+ Line: 123
- FileName: file3.cpp
Line: 456
- Hash: 101010
@@ -93,8 +93,8 @@ DataAccessProfiles:
- FileName: file.cpp
Line: 233
KnownColdSymbols:
- - bar
- foo
+ - bar
KnownColdStrHashes: [ 999, 1001 ]
...
;--- memprof-in-v3.yaml
@@ -243,7 +243,7 @@ HeapProfileRecords:
DataAccessProfiles:
SampledRecords:
- Symbol: abcde
- AccessCount: 202
+ AccessCount: 100
Locations:
- FileName: file2.h
Line: 123
@@ -255,7 +255,7 @@ DataAccessProfiles:
- FileName: file.cpp
Line: 233
KnownColdSymbols:
- - bar
- foo
+ - bar
KnownColdStrHashes: [ 999, 1001 ]
...
>From 46445c5f5d87f99579240ca8b30a9f7341f37e1f Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Fri, 19 Dec 2025 12:21:15 -0800
Subject: [PATCH 4/4] resolve code review feedback
---
llvm/include/llvm/ProfileData/MemProfSummary.h | 3 ++-
llvm/lib/ProfileData/MemProfSummary.cpp | 10 ++++------
llvm/test/Transforms/PGOProfile/memprof.ll | 2 +-
.../PGOProfile/memprof_max_cold_threshold.test | 2 +-
llvm/test/tools/llvm-profdata/memprof-yaml.test | 16 ++++++----------
5 files changed, 14 insertions(+), 19 deletions(-)
diff --git a/llvm/include/llvm/ProfileData/MemProfSummary.h b/llvm/include/llvm/ProfileData/MemProfSummary.h
index 3f426ad48cf94..b06824763c164 100644
--- a/llvm/include/llvm/ProfileData/MemProfSummary.h
+++ b/llvm/include/llvm/ProfileData/MemProfSummary.h
@@ -33,7 +33,8 @@ class MemProfSummary {
const uint64_t NumContexts, NumColdContexts, NumHotContexts;
const uint64_t MaxColdTotalSize, MaxWarmTotalSize, MaxHotTotalSize;
- // MemProf v3 and prior versions don't have data access profile.
+ // MemProf v3 and prior versions don't have data access profile,
+ // so record the data access profile state.
bool HasDataAccessProfile = false;
size_t NumHotSymbolsAndStringLiterals = 0;
size_t NumKnownColdSymbols = 0;
diff --git a/llvm/lib/ProfileData/MemProfSummary.cpp b/llvm/lib/ProfileData/MemProfSummary.cpp
index 285340b5ced38..1690745debf54 100644
--- a/llvm/lib/ProfileData/MemProfSummary.cpp
+++ b/llvm/lib/ProfileData/MemProfSummary.cpp
@@ -18,7 +18,7 @@ using namespace llvm::memprof;
void MemProfSummary::printSummaryYaml(raw_ostream &OS) const {
// For now emit as YAML comments, since they aren't read on input.
OS << "---\n";
- OS << "# MemProfHeapSummary:\n";
+ OS << "# MemProfSummary:\n";
OS << "# Total contexts: " << NumContexts << "\n";
OS << "# Total cold contexts: " << NumColdContexts << "\n";
OS << "# Total hot contexts: " << NumHotContexts << "\n";
@@ -26,12 +26,10 @@ void MemProfSummary::printSummaryYaml(raw_ostream &OS) const {
OS << "# Maximum warm context total size: " << MaxWarmTotalSize << "\n";
OS << "# Maximum hot context total size: " << MaxHotTotalSize << "\n";
if (HasDataAccessProfile) {
- OS << "#\n";
- OS << "# DataAccessProfileSummary:\n";
- OS << "# Num hot symbols and string literals: "
+ OS << "# Num hot symbols and string literals: "
<< NumHotSymbolsAndStringLiterals << "\n";
- OS << "# Num known cold symbols: " << NumKnownColdSymbols << "\n";
- OS << "# Num known cold string literals: " << NumKnownColdStringLiterals
+ OS << "# Num known cold symbols: " << NumKnownColdSymbols << "\n";
+ OS << "# Num known cold string literals: " << NumKnownColdStringLiterals
<< "\n";
}
}
diff --git a/llvm/test/Transforms/PGOProfile/memprof.ll b/llvm/test/Transforms/PGOProfile/memprof.ll
index 00175b2f3984c..f6a89a8ceb86a 100644
--- a/llvm/test/Transforms/PGOProfile/memprof.ll
+++ b/llvm/test/Transforms/PGOProfile/memprof.ll
@@ -23,7 +23,7 @@
;; Check that the summary can be shown (and is identical) for both the raw and indexed profiles.
; RUN: llvm-profdata show --memory %S/Inputs/memprof.memprofraw --profiled-binary %S/Inputs/memprof.exe | FileCheck %s --check-prefixes=SUMMARY
; RUN: llvm-profdata show --memory %t.memprofdata | FileCheck %s --check-prefixes=SUMMARY
-; SUMMARY: # MemProfHeapSummary:
+; SUMMARY: # MemProfSummary:
; SUMMARY: # Total contexts: 8
; SUMMARY: # Total cold contexts: 5
; SUMMARY: # Total hot contexts: 0
diff --git a/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test b/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
index d1dcc86eac8e8..8f1cabf9a4e87 100644
--- a/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
+++ b/llvm/test/Transforms/PGOProfile/memprof_max_cold_threshold.test
@@ -9,7 +9,7 @@
; RUN: llvm-profdata merge --memprof-version=4 %t/memprof_max_cold_threshold.yaml -o %t/memprof_max_cold_threshold.memprofdata
; RUN: llvm-profdata show --memory %t/memprof_max_cold_threshold.memprofdata | FileCheck %s --check-prefixes=SUMMARY
-; SUMMARY: # MemProfHeapSummary:
+; SUMMARY: # MemProfSummary:
; SUMMARY: # Total contexts: 5
; SUMMARY: # Total cold contexts: 4
; SUMMARY: # Total hot contexts: 0
diff --git a/llvm/test/tools/llvm-profdata/memprof-yaml.test b/llvm/test/tools/llvm-profdata/memprof-yaml.test
index de7cb65067d2f..f64c329b478fb 100644
--- a/llvm/test/tools/llvm-profdata/memprof-yaml.test
+++ b/llvm/test/tools/llvm-profdata/memprof-yaml.test
@@ -37,15 +37,13 @@
;--- memprof-in.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
# Maximum cold context total size: 0
# Maximum warm context total size: 666
# Maximum hot context total size: 0
-#
-# DataAccessProfileSummary:
# Num hot symbols and string literals: 2
# Num known cold symbols: 2
# Num known cold string literals: 2
@@ -99,7 +97,7 @@ DataAccessProfiles:
...
;--- memprof-in-v3.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -136,7 +134,7 @@ HeapProfileRecords:
...
;--- memprof-in-alloc-sites-only.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -166,7 +164,7 @@ HeapProfileRecords:
...
;--- memprof-in-call-sites-only.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 0
# Total cold contexts: 0
# Total hot contexts: 0
@@ -188,7 +186,7 @@ HeapProfileRecords:
...
;--- memprof-in-no-dap.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 2
# Total cold contexts: 0
# Total hot contexts: 0
@@ -227,15 +225,13 @@ HeapProfileRecords:
...
;--- memprof-in-no-heap.yaml
---
-# MemProfHeapSummary:
+# MemProfSummary:
# Total contexts: 0
# Total cold contexts: 0
# Total hot contexts: 0
# Maximum cold context total size: 0
# Maximum warm context total size: 0
# Maximum hot context total size: 0
-#
-# DataAccessProfileSummary:
# Num hot symbols and string literals: 2
# Num known cold symbols: 2
# Num known cold string literals: 2
More information about the llvm-commits
mailing list