[llvm] Introduction of typified section in ExtBinary format (PR #166553)

Sergey Shcherbinin via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 11 03:05:38 PST 2025


================
@@ -885,21 +912,50 @@ std::error_code SampleProfileWriterBinary::writeSummary() {
   }
   return sampleprof_error::success;
 }
-std::error_code SampleProfileWriterBinary::writeBody(const FunctionSamples &S) {
-  auto &OS = *OutputStream;
-  if (std::error_code EC = writeContextIdx(S.getContext()))
-    return EC;
 
+void SampleProfileWriterBinary::writeLBRProfile(const FunctionSamples &S) {
+  auto &OS = *OutputStream;
   encodeULEB128(S.getTotalSamples(), OS);
-
-  // Emit all the body samples.
   encodeULEB128(S.getBodySamples().size(), OS);
   for (const auto &I : S.getBodySamples()) {
     LineLocation Loc = I.first;
     const SampleRecord &Sample = I.second;
     Loc.serialize(OS);
     Sample.serialize(OS, getNameTable());
   }
+}
+
+void SampleProfileWriterBinary::writeTypifiedProfile(const FunctionSamples &S) {
+  // Currently only LBR profile is supported as typified profile.
+  auto &OS = *OutputStream;
+  // write the number of profile types for function
+  encodeULEB128(1, OS);
----------------
SergeyShch01 wrote:

Not sure I got the idea.

This is a number of profiles which are really encoded for the function (this number will be used during the profile reading).

I updated this code to make this clearer.


https://github.com/llvm/llvm-project/pull/166553


More information about the llvm-commits mailing list