diff options
author | mingmingl <mingmingl@google.com> | 2025-05-15 09:56:52 -0700 |
---|---|---|
committer | mingmingl <mingmingl@google.com> | 2025-05-15 09:56:52 -0700 |
commit | d15ae3e73589b50edeb2ab823976734eaa3806e5 (patch) | |
tree | 53f7fa084c3d06a60461fea2125e26ec0b07e771 /llvm/lib/ProfileData/InstrProfWriter.cpp | |
parent | 6dd04e46542851b84bf26cd95245399204072085 (diff) | |
download | llvm-users/mingmingl-llvm/test.zip llvm-users/mingmingl-llvm/test.tar.gz llvm-users/mingmingl-llvm/test.tar.bz2 |
Support reading and writing data access profiles in memprof v4.users/mingmingl-llvm/test
Diffstat (limited to 'llvm/lib/ProfileData/InstrProfWriter.cpp')
-rw-r--r-- | llvm/lib/ProfileData/InstrProfWriter.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp index 2759346..b0012cc 100644 --- a/llvm/lib/ProfileData/InstrProfWriter.cpp +++ b/llvm/lib/ProfileData/InstrProfWriter.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/SetVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/IR/ProfileSummary.h" +#include "llvm/ProfileData/DataAccessProf.h" #include "llvm/ProfileData/IndexedMemProfData.h" #include "llvm/ProfileData/InstrProf.h" #include "llvm/ProfileData/MemProf.h" @@ -29,6 +30,7 @@ #include "llvm/Support/raw_ostream.h" #include <cstdint> #include <ctime> +#include <functional> #include <memory> #include <string> #include <tuple> @@ -152,9 +154,7 @@ void InstrProfWriter::setValueProfDataEndianness(llvm::endianness Endianness) { InfoObj->ValueProfDataEndianness = Endianness; } -void InstrProfWriter::setOutputSparse(bool Sparse) { - this->Sparse = Sparse; -} +void InstrProfWriter::setOutputSparse(bool Sparse) { this->Sparse = Sparse; } void InstrProfWriter::addRecord(NamedInstrProfRecord &&I, uint64_t Weight, function_ref<void(Error)> Warn) { @@ -329,6 +329,12 @@ void InstrProfWriter::addBinaryIds(ArrayRef<llvm::object::BuildID> BIs) { llvm::append_range(BinaryIds, BIs); } +void InstrProfWriter::addDataAccessProfData( + std::unique_ptr<data_access_prof::DataAccessProfData> + DataAccessProfDataIn) { + DataAccessProfileData = std::move(DataAccessProfDataIn); +} + void InstrProfWriter::addTemporalProfileTrace(TemporalProfTraceTy Trace) { assert(Trace.FunctionNameRefs.size() <= MaxTemporalProfTraceLength); assert(!Trace.FunctionNameRefs.empty()); @@ -614,8 +620,14 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { uint64_t MemProfSectionStart = 0; if (static_cast<bool>(ProfileKind & InstrProfKind::MemProf)) { MemProfSectionStart = OS.tell(); + std::optional<std::reference_wrapper<data_access_prof::DataAccessProfData>> + DAP = std::nullopt; + if (DataAccessProfileData.get() != nullptr) + DAP = std::ref(*DataAccessProfileData.get()); + if (auto E = writeMemProf(OS, MemProfData, MemProfVersionRequested, - MemProfFullSchema)) + MemProfFullSchema, DAP)) + return E; } |