From 4822b43ae4e9f46ae277f834964c69b4af787010 Mon Sep 17 00:00:00 2001 From: Mingming Liu Date: Fri, 19 Dec 2025 12:26:20 -0800 Subject: [PATCH] [StaticDataLayout] Sort records before printing them in text format (#172592) This change proposes to sort records before printing to make it more readable and easier to compare. --- llvm/lib/ProfileData/InstrProfReader.cpp | 19 +++++++++++++++++++ .../tools/llvm-profdata/memprof-yaml.test | 8 ++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp index d2ae4b5226ff..8147ee8d0e81 100644 --- a/llvm/lib/ProfileData/InstrProfReader.cpp +++ b/llvm/lib/ProfileData/InstrProfReader.cpp @@ -1554,6 +1554,12 @@ memprof::AllMemProfData IndexedMemProfReader::getAllMemProfData() const { } // Populate the data access profiles for yaml output. if (DataAccessProfileData != nullptr) { + AllMemProfData.YamlifiedDataAccessProfiles.Records.reserve( + DataAccessProfileData->getRecords().size()); + AllMemProfData.YamlifiedDataAccessProfiles.KnownColdSymbols.reserve( + DataAccessProfileData->getKnownColdSymbols().size()); + AllMemProfData.YamlifiedDataAccessProfiles.KnownColdStrHashes.reserve( + DataAccessProfileData->getKnownColdHashes().size()); for (const auto &[SymHandleRef, RecordRef] : DataAccessProfileData->getRecords()) AllMemProfData.YamlifiedDataAccessProfiles.Records.push_back( @@ -1565,6 +1571,19 @@ memprof::AllMemProfData IndexedMemProfReader::getAllMemProfData() const { for (uint64_t Hash : DataAccessProfileData->getKnownColdHashes()) AllMemProfData.YamlifiedDataAccessProfiles.KnownColdStrHashes.push_back( Hash); + llvm::stable_sort(AllMemProfData.YamlifiedDataAccessProfiles.Records, + [](const llvm::memprof::DataAccessProfRecord &lhs, + const llvm::memprof::DataAccessProfRecord &rhs) { + return lhs.AccessCount > rhs.AccessCount; + }); + llvm::stable_sort( + AllMemProfData.YamlifiedDataAccessProfiles.KnownColdSymbols, + [](const std::string &lhs, const std::string &rhs) { + return lhs < rhs; + }); + llvm::stable_sort( + AllMemProfData.YamlifiedDataAccessProfiles.KnownColdStrHashes, + [](const uint64_t &lhs, const uint64_t &rhs) { return lhs < rhs; }); } return AllMemProfData; } diff --git a/llvm/test/tools/llvm-profdata/memprof-yaml.test b/llvm/test/tools/llvm-profdata/memprof-yaml.test index 6fbfbdb507f2..30fa30385010 100644 --- a/llvm/test/tools/llvm-profdata/memprof-yaml.test +++ b/llvm/test/tools/llvm-profdata/memprof-yaml.test @@ -76,7 +76,7 @@ HeapProfileRecords: DataAccessProfiles: SampledRecords: - Symbol: abcde - AccessCount: 100 + AccessCount: 202 Locations: - FileName: file2.h Line: 123 @@ -88,8 +88,8 @@ DataAccessProfiles: - FileName: file.cpp Line: 233 KnownColdSymbols: - - foo - bar + - foo KnownColdStrHashes: [ 999, 1001 ] ... ;--- memprof-in-v3.yaml @@ -233,7 +233,7 @@ HeapProfileRecords: DataAccessProfiles: SampledRecords: - Symbol: abcde - AccessCount: 100 + AccessCount: 202 Locations: - FileName: file2.h Line: 123 @@ -245,7 +245,7 @@ DataAccessProfiles: - FileName: file.cpp Line: 233 KnownColdSymbols: - - foo - bar + - foo KnownColdStrHashes: [ 999, 1001 ] ...