[llvm] [ObjectYAML][NFC] Extract BBAddrMap YAML types into shared namespace (PR #196019)

via llvm-commits llvm-commits at lists.llvm.org
Wed May 6 01:10:37 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-objectyaml

Author: Haohai Wen (HaohaiWen)

<details>
<summary>Changes</summary>

Move BBAddrMapEntry and PGOAnalysisMapEntry out of namespace ELFYAML
into a new format-agnostic namespace BBAddrMapYAML so that COFF
YAML support can reuse the same schema and MappingTraits.

---
Full diff: https://github.com/llvm/llvm-project/pull/196019.diff


7 Files Affected:

- (added) llvm/include/llvm/ObjectYAML/BBAddrMapYAML.h (+132) 
- (modified) llvm/include/llvm/ObjectYAML/ELFYAML.h (+3-93) 
- (added) llvm/lib/ObjectYAML/BBAddrMapYAML.cpp (+73) 
- (modified) llvm/lib/ObjectYAML/CMakeLists.txt (+1) 
- (modified) llvm/lib/ObjectYAML/ELFEmitter.cpp (+4-4) 
- (modified) llvm/lib/ObjectYAML/ELFYAML.cpp (-51) 
- (modified) llvm/tools/obj2yaml/elf2yaml.cpp (+6-5) 


``````````diff
diff --git a/llvm/include/llvm/ObjectYAML/BBAddrMapYAML.h b/llvm/include/llvm/ObjectYAML/BBAddrMapYAML.h
new file mode 100644
index 0000000000000..ddf139b025015
--- /dev/null
+++ b/llvm/include/llvm/ObjectYAML/BBAddrMapYAML.h
@@ -0,0 +1,132 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file declares the YAML representation of BB address maps
+/// (SHT_LLVM_BB_ADDR_MAP / .llvm_bb_addr_map). The types here are
+/// format-agnostic so they can be reused by ELFYAML and COFFYAML.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_OBJECTYAML_BBADDRMAPYAML_H
+#define LLVM_OBJECTYAML_BBADDRMAPYAML_H
+
+#include "llvm/Support/YAMLTraits.h"
+#include <cstdint>
+#include <optional>
+#include <vector>
+
+namespace llvm {
+namespace BBAddrMapYAML {
+
+struct BBAddrMapEntry {
+  struct BBEntry {
+    uint32_t ID;
+    llvm::yaml::Hex64 AddressOffset;
+    llvm::yaml::Hex64 Size;
+    llvm::yaml::Hex64 Metadata;
+    std::optional<std::vector<llvm::yaml::Hex64>> CallsiteEndOffsets;
+    std::optional<llvm::yaml::Hex64> Hash;
+  };
+  uint8_t Version;
+  llvm::yaml::Hex16 Feature;
+
+  struct BBRangeEntry {
+    llvm::yaml::Hex64 BaseAddress;
+    std::optional<uint64_t> NumBlocks;
+    std::optional<std::vector<BBEntry>> BBEntries;
+  };
+
+  std::optional<uint64_t> NumBBRanges;
+  std::optional<std::vector<BBRangeEntry>> BBRanges;
+
+  llvm::yaml::Hex64 getFunctionAddress() const {
+    if (!BBRanges || BBRanges->empty())
+      return 0;
+    return BBRanges->front().BaseAddress;
+  }
+
+  // Returns if any BB entries have non-empty callsite offsets.
+  bool hasAnyCallsiteEndOffsets() const {
+    if (!BBRanges)
+      return false;
+    for (const BBRangeEntry &BBR : *BBRanges) {
+      if (!BBR.BBEntries)
+        continue;
+      for (const BBEntry &BBE : *BBR.BBEntries)
+        if (BBE.CallsiteEndOffsets && !BBE.CallsiteEndOffsets->empty())
+          return true;
+    }
+    return false;
+  }
+};
+
+struct PGOAnalysisMapEntry {
+  struct PGOBBEntry {
+    struct SuccessorEntry {
+      uint32_t ID;
+      llvm::yaml::Hex32 BrProb;
+      std::optional<uint32_t> PostLinkBrFreq;
+    };
+    std::optional<uint64_t> BBFreq;
+    std::optional<uint32_t> PostLinkBBFreq;
+    std::optional<std::vector<SuccessorEntry>> Successors;
+  };
+  std::optional<uint64_t> FuncEntryCount;
+  std::optional<std::vector<PGOBBEntry>> PGOBBEntries;
+};
+
+} // end namespace BBAddrMapYAML
+} // end namespace llvm
+
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::BBAddrMapYAML::BBAddrMapEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::BBAddrMapYAML::BBAddrMapEntry::BBEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::BBAddrMapYAML::PGOAnalysisMapEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(
+    llvm::BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(
+    llvm::BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry)
+
+namespace llvm {
+namespace yaml {
+
+template <> struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry> {
+  static void mapping(IO &IO, BBAddrMapYAML::BBAddrMapEntry &E);
+};
+
+template <> struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry> {
+  static void mapping(IO &IO, BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry &E);
+};
+
+template <> struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBEntry> {
+  static void mapping(IO &IO, BBAddrMapYAML::BBAddrMapEntry::BBEntry &E);
+};
+
+template <> struct MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry> {
+  static void mapping(IO &IO, BBAddrMapYAML::PGOAnalysisMapEntry &E);
+};
+
+template <>
+struct MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry> {
+  static void mapping(IO &IO,
+                      BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry &E);
+};
+
+template <>
+struct MappingTraits<
+    BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry> {
+  static void
+  mapping(IO &IO,
+          BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &E);
+};
+
+} // end namespace yaml
+} // end namespace llvm
+
+#endif // LLVM_OBJECTYAML_BBADDRMAPYAML_H
diff --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
index a8236ca37b5ed..f5267ffd1b52a 100644
--- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
@@ -18,6 +18,7 @@
 #include "llvm/ADT/StringRef.h"
 #include "llvm/BinaryFormat/ELF.h"
 #include "llvm/Object/ELFTypes.h"
+#include "llvm/ObjectYAML/BBAddrMapYAML.h"
 #include "llvm/ObjectYAML/DWARFYAML.h"
 #include "llvm/ObjectYAML/YAML.h"
 #include "llvm/Support/YAMLTraits.h"
@@ -156,63 +157,6 @@ struct DynamicEntry {
   llvm::yaml::Hex64 Val;
 };
 
-struct BBAddrMapEntry {
-  struct BBEntry {
-    uint32_t ID;
-    llvm::yaml::Hex64 AddressOffset;
-    llvm::yaml::Hex64 Size;
-    llvm::yaml::Hex64 Metadata;
-    std::optional<std::vector<llvm::yaml::Hex64>> CallsiteEndOffsets;
-    std::optional<llvm::yaml::Hex64> Hash;
-  };
-  uint8_t Version;
-  llvm::yaml::Hex16 Feature;
-
-  struct BBRangeEntry {
-    llvm::yaml::Hex64 BaseAddress;
-    std::optional<uint64_t> NumBlocks;
-    std::optional<std::vector<BBEntry>> BBEntries;
-  };
-
-  std::optional<uint64_t> NumBBRanges;
-  std::optional<std::vector<BBRangeEntry>> BBRanges;
-
-  llvm::yaml::Hex64 getFunctionAddress() const {
-    if (!BBRanges || BBRanges->empty())
-      return 0;
-    return BBRanges->front().BaseAddress;
-  }
-
-  // Returns if any BB entries have non-empty callsite offsets.
-  bool hasAnyCallsiteEndOffsets() const {
-    if (!BBRanges)
-      return false;
-    for (const ELFYAML::BBAddrMapEntry::BBRangeEntry &BBR : *BBRanges) {
-      if (!BBR.BBEntries)
-        continue;
-      for (const ELFYAML::BBAddrMapEntry::BBEntry &BBE : *BBR.BBEntries)
-        if (BBE.CallsiteEndOffsets && !BBE.CallsiteEndOffsets->empty())
-          return true;
-    }
-    return false;
-  }
-};
-
-struct PGOAnalysisMapEntry {
-  struct PGOBBEntry {
-    struct SuccessorEntry {
-      uint32_t ID;
-      llvm::yaml::Hex32 BrProb;
-      std::optional<uint32_t> PostLinkBrFreq;
-    };
-    std::optional<uint64_t> BBFreq;
-    std::optional<uint32_t> PostLinkBBFreq;
-    std::optional<std::vector<SuccessorEntry>> Successors;
-  };
-  std::optional<uint64_t> FuncEntryCount;
-  std::optional<std::vector<PGOBBEntry>> PGOBBEntries;
-};
-
 struct StackSizeEntry {
   llvm::yaml::Hex64 Address;
   llvm::yaml::Hex64 Size;
@@ -359,8 +303,8 @@ struct SectionHeaderTable : Chunk {
 };
 
 struct BBAddrMapSection : Section {
-  std::optional<std::vector<BBAddrMapEntry>> Entries;
-  std::optional<std::vector<PGOAnalysisMapEntry>> PGOAnalyses;
+  std::optional<std::vector<BBAddrMapYAML::BBAddrMapEntry>> Entries;
+  std::optional<std::vector<BBAddrMapYAML::PGOAnalysisMapEntry>> PGOAnalyses;
 
   BBAddrMapSection() : Section(ChunkKind::BBAddrMap) {}
 
@@ -780,13 +724,6 @@ bool shouldAllocateFileSpace(ArrayRef<ProgramHeader> Phdrs,
 } // end namespace llvm
 
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::StackSizeEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::BBAddrMapEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::BBAddrMapEntry::BBEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::BBAddrMapEntry::BBRangeEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::PGOAnalysisMapEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::PGOAnalysisMapEntry::PGOBBEntry)
-LLVM_YAML_IS_SEQUENCE_VECTOR(
-    llvm::ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry)
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::DynamicEntry)
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::LinkerOption)
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::ELFYAML::CallGraphEntryWeight)
@@ -947,33 +884,6 @@ template <> struct MappingTraits<ELFYAML::StackSizeEntry> {
   static void mapping(IO &IO, ELFYAML::StackSizeEntry &Rel);
 };
 
-template <> struct MappingTraits<ELFYAML::BBAddrMapEntry> {
-  static void mapping(IO &IO, ELFYAML::BBAddrMapEntry &E);
-};
-
-template <> struct MappingTraits<ELFYAML::BBAddrMapEntry::BBRangeEntry> {
-  static void mapping(IO &IO, ELFYAML::BBAddrMapEntry::BBRangeEntry &E);
-};
-
-template <> struct MappingTraits<ELFYAML::BBAddrMapEntry::BBEntry> {
-  static void mapping(IO &IO, ELFYAML::BBAddrMapEntry::BBEntry &E);
-};
-
-template <> struct MappingTraits<ELFYAML::PGOAnalysisMapEntry> {
-  static void mapping(IO &IO, ELFYAML::PGOAnalysisMapEntry &Rel);
-};
-
-template <> struct MappingTraits<ELFYAML::PGOAnalysisMapEntry::PGOBBEntry> {
-  static void mapping(IO &IO, ELFYAML::PGOAnalysisMapEntry::PGOBBEntry &Rel);
-};
-
-template <>
-struct MappingTraits<ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry> {
-  static void
-  mapping(IO &IO,
-          ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &Rel);
-};
-
 template <> struct MappingTraits<ELFYAML::GnuHashHeader> {
   static void mapping(IO &IO, ELFYAML::GnuHashHeader &Rel);
 };
diff --git a/llvm/lib/ObjectYAML/BBAddrMapYAML.cpp b/llvm/lib/ObjectYAML/BBAddrMapYAML.cpp
new file mode 100644
index 0000000000000..fbeda0d7f4ef5
--- /dev/null
+++ b/llvm/lib/ObjectYAML/BBAddrMapYAML.cpp
@@ -0,0 +1,73 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// This file defines the YAMLIO mappings for the format-agnostic BB address
+/// map YAML types declared in BBAddrMapYAML.h.
+///
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ObjectYAML/BBAddrMapYAML.h"
+
+namespace llvm {
+namespace yaml {
+
+void MappingTraits<BBAddrMapYAML::BBAddrMapEntry>::mapping(
+    IO &IO, BBAddrMapYAML::BBAddrMapEntry &E) {
+  assert(IO.getContext() && "The IO context is not initialized");
+  IO.mapRequired("Version", E.Version);
+  IO.mapOptional("Feature", E.Feature, Hex16(0));
+  IO.mapOptional("NumBBRanges", E.NumBBRanges);
+  IO.mapOptional("BBRanges", E.BBRanges);
+}
+
+void MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry>::mapping(
+    IO &IO, BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry &E) {
+  IO.mapOptional("BaseAddress", E.BaseAddress, Hex64(0));
+  IO.mapOptional("NumBlocks", E.NumBlocks);
+  IO.mapOptional("BBEntries", E.BBEntries);
+}
+
+void MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBEntry>::mapping(
+    IO &IO, BBAddrMapYAML::BBAddrMapEntry::BBEntry &E) {
+  assert(IO.getContext() && "The IO context is not initialized");
+  IO.mapOptional("ID", E.ID);
+  IO.mapRequired("AddressOffset", E.AddressOffset);
+  IO.mapRequired("Size", E.Size);
+  IO.mapRequired("Metadata", E.Metadata);
+  IO.mapOptional("CallsiteEndOffsets", E.CallsiteEndOffsets);
+  IO.mapOptional("Hash", E.Hash);
+}
+
+void MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry>::mapping(
+    IO &IO, BBAddrMapYAML::PGOAnalysisMapEntry &E) {
+  assert(IO.getContext() && "The IO context is not initialized");
+  IO.mapOptional("FuncEntryCount", E.FuncEntryCount);
+  IO.mapOptional("PGOBBEntries", E.PGOBBEntries);
+}
+
+void MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry>::mapping(
+    IO &IO, BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry &E) {
+  assert(IO.getContext() && "The IO context is not initialized");
+  IO.mapOptional("BBFreq", E.BBFreq);
+  IO.mapOptional("PostLinkBBFreq", E.PostLinkBBFreq);
+  IO.mapOptional("Successors", E.Successors);
+}
+
+void MappingTraits<
+    BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry>::
+    mapping(IO &IO,
+            BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &E) {
+  assert(IO.getContext() && "The IO context is not initialized");
+  IO.mapRequired("ID", E.ID);
+  IO.mapRequired("BrProb", E.BrProb);
+  IO.mapOptional("PostLinkBrFreq", E.PostLinkBrFreq);
+}
+
+} // end namespace yaml
+} // end namespace llvm
diff --git a/llvm/lib/ObjectYAML/CMakeLists.txt b/llvm/lib/ObjectYAML/CMakeLists.txt
index b36974d47d9f8..44c60ed6378e5 100644
--- a/llvm/lib/ObjectYAML/CMakeLists.txt
+++ b/llvm/lib/ObjectYAML/CMakeLists.txt
@@ -1,6 +1,7 @@
 add_llvm_component_library(LLVMObjectYAML
   ArchiveEmitter.cpp
   ArchiveYAML.cpp
+  BBAddrMapYAML.cpp
   CodeViewYAMLDebugSections.cpp
   CodeViewYAMLSymbols.cpp
   CodeViewYAMLTypeHashing.cpp
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index 8530785d07c93..b60b27ff6f082 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -1453,7 +1453,7 @@ void ELFState<ELFT>::writeSectionContent(
     return;
   }
 
-  const std::vector<ELFYAML::PGOAnalysisMapEntry> *PGOAnalyses = nullptr;
+  const std::vector<BBAddrMapYAML::PGOAnalysisMapEntry> *PGOAnalyses = nullptr;
   if (Section.PGOAnalyses) {
     if (Section.Entries->size() != Section.PGOAnalyses->size())
       WithColor::warning() << "PGOAnalyses must be the same length as Entries "
@@ -1504,7 +1504,7 @@ void ELFState<ELFT>::writeSectionContent(
     uint64_t TotalNumBlocks = 0;
     bool EmitCallsiteEndOffsets =
         FeatureOrErr->CallsiteEndOffsets || E.hasAnyCallsiteEndOffsets();
-    for (const ELFYAML::BBAddrMapEntry::BBRangeEntry &BBR : *E.BBRanges) {
+    for (const BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry &BBR : *E.BBRanges) {
       // Write the base address of the range.
       CBA.write<uintX_t>(BBR.BaseAddress, ELFT::Endianness);
       // Write number of BBEntries (number of basic blocks in this basic block
@@ -1516,7 +1516,7 @@ void ELFState<ELFT>::writeSectionContent(
       // Write all BBEntries in this BBRange.
       if (!BBR.BBEntries || FeatureOrErr->OmitBBEntries)
         continue;
-      for (const ELFYAML::BBAddrMapEntry::BBEntry &BBE : *BBR.BBEntries) {
+      for (const BBAddrMapYAML::BBAddrMapEntry::BBEntry &BBE : *BBR.BBEntries) {
         ++TotalNumBlocks;
         if (Section.Type == llvm::ELF::SHT_LLVM_BB_ADDR_MAP && E.Version > 1)
           SHeader.sh_size += CBA.writeULEB128(BBE.ID);
@@ -1542,7 +1542,7 @@ void ELFState<ELFT>::writeSectionContent(
     }
     if (!PGOAnalyses)
       continue;
-    const ELFYAML::PGOAnalysisMapEntry &PGOEntry = PGOAnalyses->at(Idx);
+    const BBAddrMapYAML::PGOAnalysisMapEntry &PGOEntry = PGOAnalyses->at(Idx);
 
     if (PGOEntry.FuncEntryCount)
       SHeader.sh_size += CBA.writeULEB128(*PGOEntry.FuncEntryCount);
diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index f61ad8089c71b..58013f7a4be0c 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -1815,57 +1815,6 @@ void MappingTraits<ELFYAML::StackSizeEntry>::mapping(
   IO.mapRequired("Size", E.Size);
 }
 
-void MappingTraits<ELFYAML::BBAddrMapEntry>::mapping(
-    IO &IO, ELFYAML::BBAddrMapEntry &E) {
-  assert(IO.getContext() && "The IO context is not initialized");
-  IO.mapRequired("Version", E.Version);
-  IO.mapOptional("Feature", E.Feature, Hex16(0));
-  IO.mapOptional("NumBBRanges", E.NumBBRanges);
-  IO.mapOptional("BBRanges", E.BBRanges);
-}
-
-void MappingTraits<ELFYAML::BBAddrMapEntry::BBRangeEntry>::mapping(
-    IO &IO, ELFYAML::BBAddrMapEntry::BBRangeEntry &E) {
-  IO.mapOptional("BaseAddress", E.BaseAddress, Hex64(0));
-  IO.mapOptional("NumBlocks", E.NumBlocks);
-  IO.mapOptional("BBEntries", E.BBEntries);
-}
-
-void MappingTraits<ELFYAML::BBAddrMapEntry::BBEntry>::mapping(
-    IO &IO, ELFYAML::BBAddrMapEntry::BBEntry &E) {
-  assert(IO.getContext() && "The IO context is not initialized");
-  IO.mapOptional("ID", E.ID);
-  IO.mapRequired("AddressOffset", E.AddressOffset);
-  IO.mapRequired("Size", E.Size);
-  IO.mapRequired("Metadata", E.Metadata);
-  IO.mapOptional("CallsiteEndOffsets", E.CallsiteEndOffsets);
-  IO.mapOptional("Hash", E.Hash);
-}
-
-void MappingTraits<ELFYAML::PGOAnalysisMapEntry>::mapping(
-    IO &IO, ELFYAML::PGOAnalysisMapEntry &E) {
-  assert(IO.getContext() && "The IO context is not initialized");
-  IO.mapOptional("FuncEntryCount", E.FuncEntryCount);
-  IO.mapOptional("PGOBBEntries", E.PGOBBEntries);
-}
-
-void MappingTraits<ELFYAML::PGOAnalysisMapEntry::PGOBBEntry>::mapping(
-    IO &IO, ELFYAML::PGOAnalysisMapEntry::PGOBBEntry &E) {
-  assert(IO.getContext() && "The IO context is not initialized");
-  IO.mapOptional("BBFreq", E.BBFreq);
-  IO.mapOptional("PostLinkBBFreq", E.PostLinkBBFreq);
-  IO.mapOptional("Successors", E.Successors);
-}
-
-void MappingTraits<ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry>::
-    mapping(IO &IO,
-            ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &E) {
-  assert(IO.getContext() && "The IO context is not initialized");
-  IO.mapRequired("ID", E.ID);
-  IO.mapRequired("BrProb", E.BrProb);
-  IO.mapOptional("PostLinkBrFreq", E.PostLinkBrFreq);
-}
-
 void MappingTraits<ELFYAML::GnuHashHeader>::mapping(IO &IO,
                                                     ELFYAML::GnuHashHeader &E) {
   assert(IO.getContext() && "The IO context is not initialized");
diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp
index a69fd1b2d0695..34bc496beee8b 100644
--- a/llvm/tools/obj2yaml/elf2yaml.cpp
+++ b/llvm/tools/obj2yaml/elf2yaml.cpp
@@ -892,9 +892,9 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
   unsigned AddressSize = ELFT::Is64Bits ? 8 : 4;
   DataExtractor Data(Content, Obj.isLE());
 
-  std::vector<ELFYAML::BBAddrMapEntry> Entries;
+  std::vector<BBAddrMapYAML::BBAddrMapEntry> Entries;
   bool HasAnyPGOAnalysisMapEntry = false;
-  std::vector<ELFYAML::PGOAnalysisMapEntry> PGOAnalyses;
+  std::vector<BBAddrMapYAML::PGOAnalysisMapEntry> PGOAnalyses;
   DataExtractor::Cursor Cur(0);
   uint8_t Version = 0;
   uint16_t Feature = 0;
@@ -921,7 +921,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
       Address = Data.getUnsigned(Cur, AddressSize);
       NumBlocks = Data.getULEB128(Cur);
     }
-    std::vector<ELFYAML::BBAddrMapEntry::BBRangeEntry> BBRanges;
+    std::vector<BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry> BBRanges;
     uint64_t BaseAddress = 0;
     for (uint64_t BBRangeN = 0; Cur && BBRangeN != NumBBRanges; ++BBRangeN) {
       if (FeatureOrErr->MultiBBRange) {
@@ -931,7 +931,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
         BaseAddress = Address;
       }
 
-      std::vector<ELFYAML::BBAddrMapEntry::BBEntry> BBEntries;
+      std::vector<BBAddrMapYAML::BBAddrMapEntry::BBEntry> BBEntries;
       // Read the specified number of BB entries, or until decoding fails.
       for (uint64_t BlockIndex = 0; Cur && BlockIndex < NumBlocks;
            ++BlockIndex) {
@@ -960,7 +960,8 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
     Entries.push_back(
         {Version, Feature, /*NumBBRanges=*/{}, std::move(BBRanges)});
 
-    ELFYAML::PGOAnalysisMapEntry &PGOAnalysis = PGOAnalyses.emplace_back();
+    BBAddrMapYAML::PGOAnalysisMapEntry &PGOAnalysis =
+        PGOAnalyses.emplace_back();
     if (FeatureOrErr->hasPGOAnalysis()) {
       HasAnyPGOAnalysisMapEntry = true;
 

``````````

</details>


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


More information about the llvm-commits mailing list