[llvm] bda0209 - [ProfileData] Add InstrProfWriter::writeBinaryIds (NFC) (#118754)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 5 08:39:31 PST 2024
Author: Kazu Hirata
Date: 2024-12-05T08:39:27-08:00
New Revision: bda02096d3b3c19e69b9f70ca8ff161d8173fec0
URL: https://github.com/llvm/llvm-project/commit/bda02096d3b3c19e69b9f70ca8ff161d8173fec0
DIFF: https://github.com/llvm/llvm-project/commit/bda02096d3b3c19e69b9f70ca8ff161d8173fec0.diff
LOG: [ProfileData] Add InstrProfWriter::writeBinaryIds (NFC) (#118754)
The patch makes InstrProfWriter::writeImpl less monolithic by adding
InstrProfWriter::writeBinaryIds to serialize binary IDs. This way,
InstrProfWriter::writeImpl can simply call the new function instead of
handling all the details within writeImpl.
Added:
Modified:
llvm/include/llvm/ProfileData/InstrProfWriter.h
llvm/lib/ProfileData/InstrProfWriter.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/ProfileData/InstrProfWriter.h b/llvm/include/llvm/ProfileData/InstrProfWriter.h
index fdb51c4ab42182..117fddb5729e40 100644
--- a/llvm/include/llvm/ProfileData/InstrProfWriter.h
+++ b/llvm/include/llvm/ProfileData/InstrProfWriter.h
@@ -237,6 +237,9 @@ class InstrProfWriter {
uint64_t writeHeader(const IndexedInstrProf::Header &header,
const bool WritePrevVersion, ProfOStream &OS);
+ // Writes binary IDs.
+ Error writeBinaryIds(ProfOStream &OS);
+
// Writes compressed vtable names to profiles.
Error writeVTableNames(ProfOStream &OS);
};
diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp
index 64625dee7701e4..f112ea2efcaa98 100644
--- a/llvm/lib/ProfileData/InstrProfWriter.cpp
+++ b/llvm/lib/ProfileData/InstrProfWriter.cpp
@@ -810,6 +810,45 @@ uint64_t InstrProfWriter::writeHeader(const IndexedInstrProf::Header &Header,
return BackPatchStartOffset;
}
+Error InstrProfWriter::writeBinaryIds(ProfOStream &OS) {
+ // BinaryIdSection has two parts:
+ // 1. uint64_t BinaryIdsSectionSize
+ // 2. list of binary ids that consist of:
+ // a. uint64_t BinaryIdLength
+ // b. uint8_t BinaryIdData
+ // c. uint8_t Padding (if necessary)
+ // Calculate size of binary section.
+ uint64_t BinaryIdsSectionSize = 0;
+
+ // Remove duplicate binary ids.
+ llvm::sort(BinaryIds);
+ BinaryIds.erase(llvm::unique(BinaryIds), BinaryIds.end());
+
+ for (const auto &BI : BinaryIds) {
+ // Increment by binary id length data type size.
+ BinaryIdsSectionSize += sizeof(uint64_t);
+ // Increment by binary id data length, aligned to 8 bytes.
+ BinaryIdsSectionSize += alignToPowerOf2(BI.size(), sizeof(uint64_t));
+ }
+ // Write binary ids section size.
+ OS.write(BinaryIdsSectionSize);
+
+ for (const auto &BI : BinaryIds) {
+ uint64_t BILen = BI.size();
+ // Write binary id length.
+ OS.write(BILen);
+ // Write binary id data.
+ for (unsigned K = 0; K < BILen; K++)
+ OS.writeByte(BI[K]);
+ // Write padding if necessary.
+ uint64_t PaddingSize = alignToPowerOf2(BILen, sizeof(uint64_t)) - BILen;
+ for (unsigned K = 0; K < PaddingSize; K++)
+ OS.writeByte(0);
+ }
+
+ return Error::success();
+}
+
Error InstrProfWriter::writeVTableNames(ProfOStream &OS) {
std::vector<std::string> VTableNameStrs;
for (StringRef VTableName : VTableNames.keys())
@@ -920,41 +959,9 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) {
return E;
}
- // BinaryIdSection has two parts:
- // 1. uint64_t BinaryIdsSectionSize
- // 2. list of binary ids that consist of:
- // a. uint64_t BinaryIdLength
- // b. uint8_t BinaryIdData
- // c. uint8_t Padding (if necessary)
uint64_t BinaryIdSectionStart = OS.tell();
- // Calculate size of binary section.
- uint64_t BinaryIdsSectionSize = 0;
-
- // Remove duplicate binary ids.
- llvm::sort(BinaryIds);
- BinaryIds.erase(llvm::unique(BinaryIds), BinaryIds.end());
-
- for (const auto &BI : BinaryIds) {
- // Increment by binary id length data type size.
- BinaryIdsSectionSize += sizeof(uint64_t);
- // Increment by binary id data length, aligned to 8 bytes.
- BinaryIdsSectionSize += alignToPowerOf2(BI.size(), sizeof(uint64_t));
- }
- // Write binary ids section size.
- OS.write(BinaryIdsSectionSize);
-
- for (const auto &BI : BinaryIds) {
- uint64_t BILen = BI.size();
- // Write binary id length.
- OS.write(BILen);
- // Write binary id data.
- for (unsigned K = 0; K < BILen; K++)
- OS.writeByte(BI[K]);
- // Write padding if necessary.
- uint64_t PaddingSize = alignToPowerOf2(BILen, sizeof(uint64_t)) - BILen;
- for (unsigned K = 0; K < PaddingSize; K++)
- OS.writeByte(0);
- }
+ if (auto E = writeBinaryIds(OS))
+ return E;
uint64_t VTableNamesSectionStart = OS.tell();
More information about the llvm-commits
mailing list