[llvm] [nfc][InstrProfWriter]Store header fields in a vector and back patch once (PR #93594)
Mingming Liu via llvm-commits
llvm-commits at lists.llvm.org
Tue May 28 11:22:30 PDT 2024
https://github.com/minglotus-6 created https://github.com/llvm/llvm-project/pull/93594
This is a split of https://github.com/llvm/llvm-project/pull/93346 as discussed.
>From 40e9da556ed0cb619d6312b814853ff58c60fce4 Mon Sep 17 00:00:00 2001
From: mingmingl <mingmingl at google.com>
Date: Tue, 28 May 2024 11:21:26 -0700
Subject: [PATCH] [nfc][InstrProfWriter]Store header fields in a vector and
back patch once
---
llvm/lib/ProfileData/InstrProfWriter.cpp | 62 ++++++------------------
1 file changed, 16 insertions(+), 46 deletions(-)
diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp
index b67a9700b680a..beb73da0dc3ba 100644
--- a/llvm/lib/ProfileData/InstrProfWriter.cpp
+++ b/llvm/lib/ProfileData/InstrProfWriter.cpp
@@ -841,52 +841,22 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) {
}
InfoObj->CSSummaryBuilder = nullptr;
- const size_t MemProfOffset = BackPatchStartOffset + sizeof(uint64_t);
- const size_t BinaryIdOffset = MemProfOffset + sizeof(uint64_t);
- const size_t TemporalProfTracesOffset = BinaryIdOffset + sizeof(uint64_t);
- const size_t VTableNamesOffset = TemporalProfTracesOffset + sizeof(uint64_t);
- if (!WritePrevVersion) {
- // Now do the final patch:
- PatchItem PatchItems[] = {
- // Patch the Header.HashOffset field.
- {BackPatchStartOffset, &HashTableStart, 1},
- // Patch the Header.MemProfOffset (=0 for profiles without MemProf
- // data).
- {MemProfOffset, &MemProfSectionStart, 1},
- // Patch the Header.BinaryIdSectionOffset.
- {BinaryIdOffset, &BinaryIdSectionStart, 1},
- // Patch the Header.TemporalProfTracesOffset (=0 for profiles without
- // traces).
- {TemporalProfTracesOffset, &TemporalProfTracesSectionStart, 1},
- {VTableNamesOffset, &VTableNamesSectionStart, 1},
- // Patch the summary data.
- {SummaryOffset, reinterpret_cast<uint64_t *>(TheSummary.get()),
- (int)(SummarySize / sizeof(uint64_t))},
- {CSSummaryOffset, reinterpret_cast<uint64_t *>(TheCSSummary.get()),
- (int)CSSummarySize}};
-
- OS.patch(PatchItems);
- } else {
- // Now do the final patch:
- PatchItem PatchItems[] = {
- // Patch the Header.HashOffset field.
- {BackPatchStartOffset, &HashTableStart, 1},
- // Patch the Header.MemProfOffset (=0 for profiles without MemProf
- // data).
- {MemProfOffset, &MemProfSectionStart, 1},
- // Patch the Header.BinaryIdSectionOffset.
- {BinaryIdOffset, &BinaryIdSectionStart, 1},
- // Patch the Header.TemporalProfTracesOffset (=0 for profiles without
- // traces).
- {TemporalProfTracesOffset, &TemporalProfTracesSectionStart, 1},
- // Patch the summary data.
- {SummaryOffset, reinterpret_cast<uint64_t *>(TheSummary.get()),
- (int)(SummarySize / sizeof(uint64_t))},
- {CSSummaryOffset, reinterpret_cast<uint64_t *>(TheCSSummary.get()),
- (int)CSSummarySize}};
-
- OS.patch(PatchItems);
- }
+ SmallVector<uint64_t, 8> HeaderOffsets = {HashTableStart, MemProfSectionStart,
+ BinaryIdSectionStart,
+ TemporalProfTracesSectionStart};
+ if (!WritePrevVersion)
+ HeaderOffsets.push_back(VTableNamesSectionStart);
+
+ PatchItem PatchItems[] = {
+ // Patch the Header fields
+ {BackPatchStartOffset, HeaderOffsets.data(), (int)HeaderOffsets.size()},
+ // Patch the summary data.
+ {SummaryOffset, reinterpret_cast<uint64_t *>(TheSummary.get()),
+ (int)(SummarySize / sizeof(uint64_t))},
+ {CSSummaryOffset, reinterpret_cast<uint64_t *>(TheCSSummary.get()),
+ (int)CSSummarySize}};
+
+ OS.patch(PatchItems);
for (const auto &I : FunctionData)
for (const auto &F : I.getValue())
More information about the llvm-commits
mailing list