diff options
Diffstat (limited to 'build/build-clang/partial-revert-llvmorg-17-init-7686-g244be0b0de19.patch')
-rw-r--r-- | build/build-clang/partial-revert-llvmorg-17-init-7686-g244be0b0de19.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/build/build-clang/partial-revert-llvmorg-17-init-7686-g244be0b0de19.patch b/build/build-clang/partial-revert-llvmorg-17-init-7686-g244be0b0de19.patch new file mode 100644 index 0000000000..9f3c9a994a --- /dev/null +++ b/build/build-clang/partial-revert-llvmorg-17-init-7686-g244be0b0de19.patch @@ -0,0 +1,76 @@ +Revert profdata changes from https://github.com/llvm/llvm-project/commit/244be0b0de198fbe8a0861bb8f75509f610b57a4 +that make rustc unable to read the profiles that `llvm-profdata merge` +outputs, further causing some problems (e.g. bug 1811960). + +diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp +index 473fa35bfeec..3d324d91f10f 100644 +--- a/llvm/lib/ProfileData/InstrProfWriter.cpp ++++ b/llvm/lib/ProfileData/InstrProfWriter.cpp +@@ -356,9 +356,6 @@ void InstrProfWriter::mergeRecordsFromWriter(InstrProfWriter &&IPW, + for (auto &I : IPW.BinaryIds) + addBinaryIds(I); + +- addTemporalProfileTraces(IPW.TemporalProfTraces, +- IPW.TemporalProfTraceStreamSize); +- + MemProfFrameData.reserve(IPW.MemProfFrameData.size()); + for (auto &I : IPW.MemProfFrameData) { + // If we weren't able to add the frame mappings then it doesn't make sense +@@ -420,7 +417,7 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { + // Write the header. + IndexedInstrProf::Header Header; + Header.Magic = IndexedInstrProf::Magic; +- Header.Version = IndexedInstrProf::ProfVersion::CurrentVersion; ++ Header.Version = IndexedInstrProf::ProfVersion::Version9; + if (static_cast<bool>(ProfileKind & InstrProfKind::IRInstrumentation)) + Header.Version |= VARIANT_MASK_IR_PROF; + if (static_cast<bool>(ProfileKind & InstrProfKind::ContextSensitive)) +@@ -435,7 +432,7 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { + if (static_cast<bool>(ProfileKind & InstrProfKind::MemProf)) + Header.Version |= VARIANT_MASK_MEMPROF; + if (static_cast<bool>(ProfileKind & InstrProfKind::TemporalProfile)) +- Header.Version |= VARIANT_MASK_TEMPORAL_PROF; ++ return make_error<InstrProfError>(instrprof_error::invalid_prof); + + Header.Unused = 0; + Header.HashType = static_cast<uint64_t>(IndexedInstrProf::HashType); +@@ -469,9 +466,6 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { + // profile contains binary ids. + OS.write(0); + +- uint64_t TemporalProfTracesOffset = OS.tell(); +- OS.write(0); +- + // Reserve space to write profile summary data. + uint32_t NumEntries = ProfileSummaryBuilder::DefaultCutoffs.size(); + uint32_t SummarySize = Summary::getSize(Summary::NumKinds, NumEntries); +@@ -585,19 +579,6 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { + OS.writeByte(0); + } + +- uint64_t TemporalProfTracesSectionStart = 0; +- if (static_cast<bool>(ProfileKind & InstrProfKind::TemporalProfile)) { +- TemporalProfTracesSectionStart = OS.tell(); +- OS.write(TemporalProfTraces.size()); +- OS.write(TemporalProfTraceStreamSize); +- for (auto &Trace : TemporalProfTraces) { +- OS.write(Trace.Weight); +- OS.write(Trace.FunctionNameRefs.size()); +- for (auto &NameRef : Trace.FunctionNameRefs) +- OS.write(NameRef); +- } +- } +- + // Allocate space for data to be serialized out. + std::unique_ptr<IndexedInstrProf::Summary> TheSummary = + IndexedInstrProf::allocSummary(SummarySize); +@@ -625,9 +606,6 @@ Error InstrProfWriter::writeImpl(ProfOStream &OS) { + {MemProfSectionOffset, &MemProfSectionStart, 1}, + // Patch the Header.BinaryIdSectionOffset. + {BinaryIdSectionOffset, &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))}, |