[llvm] 96b6ee1 - Revert "[Propeller] Use Fixed MBB ID instead of volatile MachineBasicBlock::Number."

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 13 11:18:37 PST 2022


Reminder to please always mention the reason for the revert/recommit
in the commit message.

On Tue, Dec 13, 2022 at 10:14 PM Rahman Lavaee via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
>
> Author: Rahman Lavaee
> Date: 2022-12-13T11:13:57-08:00
> New Revision: 96b6ee1bdc11eeea9d202a14d5975aac992f4176
>
> URL: https://github.com/llvm/llvm-project/commit/96b6ee1bdc11eeea9d202a14d5975aac992f4176
> DIFF: https://github.com/llvm/llvm-project/commit/96b6ee1bdc11eeea9d202a14d5975aac992f4176.diff
>
> LOG: Revert "[Propeller] Use Fixed MBB ID instead of volatile MachineBasicBlock::Number."
>
> This reverts commit 6015a045d768feab3bae9ad9c0c81e118df8b04a.
>
> Differential Revision: https://reviews.llvm.org/D139952
>
> Added:
>
>
> Modified:
>     llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
>     llvm/include/llvm/CodeGen/MachineBasicBlock.h
>     llvm/include/llvm/CodeGen/MachineFunction.h
>     llvm/include/llvm/Object/ELFTypes.h
>     llvm/include/llvm/ObjectYAML/ELFYAML.h
>     llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>     llvm/lib/CodeGen/BasicBlockSections.cpp
>     llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp
>     llvm/lib/CodeGen/MIRParser/MILexer.cpp
>     llvm/lib/CodeGen/MIRParser/MILexer.h
>     llvm/lib/CodeGen/MIRParser/MIParser.cpp
>     llvm/lib/CodeGen/MachineBasicBlock.cpp
>     llvm/lib/CodeGen/MachineFunction.cpp
>     llvm/lib/Object/ELF.cpp
>     llvm/lib/ObjectYAML/ELFEmitter.cpp
>     llvm/lib/ObjectYAML/ELFYAML.cpp
>     llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll
>     llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test
>     llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
>     llvm/test/tools/yaml2obj/ELF/bb-addr-map.yaml
>     llvm/tools/llvm-readobj/ELFDumper.cpp
>     llvm/tools/obj2yaml/elf2yaml.cpp
>     llvm/unittests/Object/ELFObjectFileTest.cpp
>
> Removed:
>     llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir
>
>
> ################################################################################
> diff  --git a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
> index b944c6edde55..f19a7293ecc6 100644
> --- a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
> +++ b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
> @@ -31,8 +31,8 @@ namespace llvm {
>
>  // The cluster information for a machine basic block.
>  struct BBClusterInfo {
> -  // Unique ID for this basic block.
> -  unsigned BBID;
> +  // MachineBasicBlock ID.
> +  unsigned MBBNumber;
>    // Cluster ID this basic block belongs to.
>    unsigned ClusterID;
>    // Position of basic block within the cluster.
>
> diff  --git a/llvm/include/llvm/CodeGen/MachineBasicBlock.h b/llvm/include/llvm/CodeGen/MachineBasicBlock.h
> index f2fc266662b7..e85776f1d73a 100644
> --- a/llvm/include/llvm/CodeGen/MachineBasicBlock.h
> +++ b/llvm/include/llvm/CodeGen/MachineBasicBlock.h
> @@ -169,10 +169,6 @@ class MachineBasicBlock
>    /// Indicate that this basic block is the entry block of a cleanup funclet.
>    bool IsCleanupFuncletEntry = false;
>
> -  /// Fixed unique ID assigned to this basic block upon creation. Used with
> -  /// basic block sections and basic block labels.
> -  std::optional<unsigned> BBID;
> -
>    /// With basic block sections, this stores the Section ID of the basic block.
>    MBBSectionID SectionID{0};
>
> @@ -624,14 +620,6 @@ class MachineBasicBlock
>
>    void setIsEndSection(bool V = true) { IsEndSection = V; }
>
> -  std::optional<unsigned> getBBID() const { return BBID; }
> -
> -  /// Returns the BBID of the block when BBAddrMapVersion >= 2, otherwise
> -  /// returns `MachineBasicBlock::Number`.
> -  /// TODO: Remove this function when version 1 is deprecated and replace its
> -  /// uses with `getBBID()`.
> -  unsigned getBBIDOrNumber() const;
> -
>    /// Returns the section ID of this basic block.
>    MBBSectionID getSectionID() const { return SectionID; }
>
> @@ -641,12 +629,6 @@ class MachineBasicBlock
>             ((unsigned)SectionID.Type) + SectionID.Number;
>    }
>
> -  /// Sets the fixed BBID of this basic block.
> -  void setBBID(unsigned V) {
> -    assert(!BBID.has_value() && "Cannot change BBID.");
> -    BBID = V;
> -  }
> -
>    /// Sets the section ID for this basic block.
>    void setSectionID(MBBSectionID V) { SectionID = V; }
>
>
> diff  --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h
> index 7afa4d5aa1c6..4d2e5d38c5a6 100644
> --- a/llvm/include/llvm/CodeGen/MachineFunction.h
> +++ b/llvm/include/llvm/CodeGen/MachineFunction.h
> @@ -374,9 +374,6 @@ class LLVM_EXTERNAL_VISIBILITY MachineFunction {
>    bool HasEHScopes = false;
>    bool HasEHFunclets = false;
>
> -  /// BBID to assign to the next basic block of this function.
> -  unsigned NextBBID = 0;
> -
>    /// Section Type for basic blocks, only relevant with basic block sections.
>    BasicBlockSection BBSectionsType = BasicBlockSection::None;
>
>
> diff  --git a/llvm/include/llvm/Object/ELFTypes.h b/llvm/include/llvm/Object/ELFTypes.h
> index 45e57869bace..7ebad36e8fa7 100644
> --- a/llvm/include/llvm/Object/ELFTypes.h
> +++ b/llvm/include/llvm/Object/ELFTypes.h
> @@ -799,7 +799,6 @@ struct BBAddrMap {
>    uint64_t Addr; // Function address
>    // Struct representing the BBAddrMap information for one basic block.
>    struct BBEntry {
> -    uint32_t ID;     // Unique ID of this basic block.
>      uint32_t Offset; // Offset of basic block relative to function start.
>      uint32_t Size;   // Size of the basic block.
>
> @@ -810,13 +809,13 @@ struct BBAddrMap {
>      bool IsEHPad;        // If this is an exception handling block.
>      bool CanFallThrough; // If this block can fall through to its next.
>
> -    BBEntry(uint32_t ID, uint32_t Offset, uint32_t Size, uint32_t Metadata)
> -        : ID(ID), Offset(Offset), Size(Size), HasReturn(Metadata & 1),
> +    BBEntry(uint32_t Offset, uint32_t Size, uint32_t Metadata)
> +        : Offset(Offset), Size(Size), HasReturn(Metadata & 1),
>            HasTailCall(Metadata & (1 << 1)), IsEHPad(Metadata & (1 << 2)),
>            CanFallThrough(Metadata & (1 << 3)){};
>
>      bool operator==(const BBEntry &Other) const {
> -      return ID == Other.ID && Offset == Other.Offset && Size == Other.Size &&
> +      return Offset == Other.Offset && Size == Other.Size &&
>               HasReturn == Other.HasReturn && HasTailCall == Other.HasTailCall &&
>               IsEHPad == Other.IsEHPad && CanFallThrough == Other.CanFallThrough;
>      }
>
> diff  --git a/llvm/include/llvm/ObjectYAML/ELFYAML.h b/llvm/include/llvm/ObjectYAML/ELFYAML.h
> index 1ba41232f552..cc77971c61cb 100644
> --- a/llvm/include/llvm/ObjectYAML/ELFYAML.h
> +++ b/llvm/include/llvm/ObjectYAML/ELFYAML.h
> @@ -158,7 +158,6 @@ struct DynamicEntry {
>
>  struct BBAddrMapEntry {
>    struct BBEntry {
> -    uint32_t ID;
>      llvm::yaml::Hex64 AddressOffset;
>      llvm::yaml::Hex64 Size;
>      llvm::yaml::Hex64 Metadata;
>
> diff  --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> index 14f0b78e4a18..7b504e021a4f 100644
> --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> @@ -1345,8 +1345,7 @@ void AsmPrinter::emitBBAddrMapSection(const MachineFunction &MF) {
>    OutStreamer->pushSection();
>    OutStreamer->switchSection(BBAddrMapSection);
>    OutStreamer->AddComment("version");
> -  uint8_t BBAddrMapVersion = OutStreamer->getContext().getBBAddrMapVersion();
> -  OutStreamer->emitInt8(BBAddrMapVersion);
> +  OutStreamer->emitInt8(OutStreamer->getContext().getBBAddrMapVersion());
>    OutStreamer->AddComment("feature");
>    OutStreamer->emitInt8(0);
>    OutStreamer->AddComment("function address");
> @@ -1358,19 +1357,12 @@ void AsmPrinter::emitBBAddrMapSection(const MachineFunction &MF) {
>    for (const MachineBasicBlock &MBB : MF) {
>      const MCSymbol *MBBSymbol =
>          MBB.isEntryBlock() ? FunctionSymbol : MBB.getSymbol();
> -    // TODO: Remove this check when version 1 is deprecated.
> -    if (BBAddrMapVersion > 1) {
> -      OutStreamer->AddComment("BB id");
> -      // Emit the BB ID for this basic block.
> -      OutStreamer->emitULEB128IntValue(*MBB.getBBID());
> -    }
>      // Emit the basic block offset relative to the end of the previous block.
>      // This is zero unless the block is padded due to alignment.
>      emitLabelDifferenceAsULEB128(MBBSymbol, PrevMBBEndSymbol);
>      // Emit the basic block size. When BBs have alignments, their size cannot
>      // always be computed from their offsets.
>      emitLabelDifferenceAsULEB128(MBB.getEndSymbol(), MBBSymbol);
> -    // Emit the Metadata.
>      OutStreamer->emitULEB128IntValue(getBBAddrMapMetadata(MBB));
>      PrevMBBEndSymbol = MBB.getEndSymbol();
>    }
>
> diff  --git a/llvm/lib/CodeGen/BasicBlockSections.cpp b/llvm/lib/CodeGen/BasicBlockSections.cpp
> index e7e73606de07..776ab6342335 100644
> --- a/llvm/lib/CodeGen/BasicBlockSections.cpp
> +++ b/llvm/lib/CodeGen/BasicBlockSections.cpp
> @@ -70,8 +70,8 @@
>
>  #include "llvm/ADT/SmallVector.h"
>  #include "llvm/ADT/StringRef.h"
> -#include "llvm/CodeGen/BasicBlockSectionUtils.h"
>  #include "llvm/CodeGen/BasicBlockSectionsProfileReader.h"
> +#include "llvm/CodeGen/BasicBlockSectionUtils.h"
>  #include "llvm/CodeGen/MachineFunction.h"
>  #include "llvm/CodeGen/MachineFunctionPass.h"
>  #include "llvm/CodeGen/Passes.h"
> @@ -130,9 +130,9 @@ INITIALIZE_PASS(BasicBlockSections, "bbsections-prepare",
>
>  // This function updates and optimizes the branching instructions of every basic
>  // block in a given function to account for changes in the layout.
> -static void
> -updateBranches(MachineFunction &MF,
> -               const SmallVector<MachineBasicBlock *> &PreLayoutFallThroughs) {
> +static void updateBranches(
> +    MachineFunction &MF,
> +    const SmallVector<MachineBasicBlock *, 4> &PreLayoutFallThroughs) {
>    const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo();
>    SmallVector<MachineOperand, 4> Cond;
>    for (auto &MBB : MF) {
> @@ -167,7 +167,7 @@ updateBranches(MachineFunction &MF,
>  bool getBBClusterInfoForFunction(
>      const MachineFunction &MF,
>      BasicBlockSectionsProfileReader *BBSectionsProfileReader,
> -    DenseMap<unsigned, BBClusterInfo> &V) {
> +    std::vector<Optional<BBClusterInfo>> &V) {
>
>    // Find the assoicated cluster information.
>    std::pair<bool, SmallVector<BBClusterInfo, 4>> P =
> @@ -182,8 +182,13 @@ bool getBBClusterInfoForFunction(
>      return true;
>    }
>
> -  for (const BBClusterInfo &BBCI : P.second)
> -    V[BBCI.BBID] = BBCI;
> +  V.resize(MF.getNumBlockIDs());
> +  for (auto bbClusterInfo : P.second) {
> +    // Bail out if the cluster information contains invalid MBB numbers.
> +    if (bbClusterInfo.MBBNumber >= MF.getNumBlockIDs())
> +      return false;
> +    V[bbClusterInfo.MBBNumber] = bbClusterInfo;
> +  }
>    return true;
>  }
>
> @@ -194,12 +199,11 @@ bool getBBClusterInfoForFunction(
>  // clusters, they are moved into a single "Exception" section. Eventually,
>  // clusters are ordered in increasing order of their IDs, with the "Exception"
>  // and "Cold" succeeding all other clusters.
> -// FuncBBClusterInfo represent the cluster information for basic blocks. It
> -// maps from BBID of basic blocks to their cluster information. If this is
> -// empty, it means unique sections for all basic blocks in the function.
> +// FuncBBClusterInfo represent the cluster information for basic blocks. If this
> +// is empty, it means unique sections for all basic blocks in the function.
>  static void
>  assignSections(MachineFunction &MF,
> -               const DenseMap<unsigned, BBClusterInfo> &FuncBBClusterInfo) {
> +               const std::vector<Optional<BBClusterInfo>> &FuncBBClusterInfo) {
>    assert(MF.hasBBSections() && "BB Sections is not set for function.");
>    // This variable stores the section ID of the cluster containing eh_pads (if
>    // all eh_pads are one cluster). If more than one cluster contain eh_pads, we
> @@ -214,21 +218,15 @@ assignSections(MachineFunction &MF,
>      if (MF.getTarget().getBBSectionsType() == llvm::BasicBlockSection::All ||
>          FuncBBClusterInfo.empty()) {
>        // If unique sections are desired for all basic blocks of the function, we
> -      // set every basic block's section ID equal to its original position in
> -      // the layout (which is equal to its number). This ensures that basic
> -      // blocks are ordered canonically.
> -      MBB.setSectionID(MBB.getNumber());
> -    } else {
> -      // TODO: Replace `getBBIDOrNumber` with `getBBID` once version 1 is
> -      // deprecated.
> -      auto I = FuncBBClusterInfo.find(MBB.getBBIDOrNumber());
> -      if (I != FuncBBClusterInfo.end()) {
> -        MBB.setSectionID(I->second.ClusterID);
> -      } else {
> -        // BB goes into the special cold section if it is not specified in the
> -        // cluster info map.
> -        MBB.setSectionID(MBBSectionID::ColdSectionID);
> -      }
> +      // set every basic block's section ID equal to its number (basic block
> +      // id). This further ensures that basic blocks are ordered canonically.
> +      MBB.setSectionID({static_cast<unsigned int>(MBB.getNumber())});
> +    } else if (FuncBBClusterInfo[MBB.getNumber()])
> +      MBB.setSectionID(FuncBBClusterInfo[MBB.getNumber()]->ClusterID);
> +    else {
> +      // BB goes into the special cold section if it is not specified in the
> +      // cluster info map.
> +      MBB.setSectionID(MBBSectionID::ColdSectionID);
>      }
>
>      if (MBB.isEHPad() && EHPadsSectionID != MBB.getSectionID() &&
> @@ -251,14 +249,12 @@ assignSections(MachineFunction &MF,
>
>  void llvm::sortBasicBlocksAndUpdateBranches(
>      MachineFunction &MF, MachineBasicBlockComparator MBBCmp) {
> -  [[maybe_unused]] const MachineBasicBlock *EntryBlock = &MF.front();
> -  SmallVector<MachineBasicBlock *> PreLayoutFallThroughs(MF.getNumBlockIDs());
> +  SmallVector<MachineBasicBlock *, 4> PreLayoutFallThroughs(
> +      MF.getNumBlockIDs());
>    for (auto &MBB : MF)
>      PreLayoutFallThroughs[MBB.getNumber()] = MBB.getFallThrough();
>
>    MF.sort(MBBCmp);
> -  assert(&MF.front() == EntryBlock &&
> -         "Entry block should not be displaced by basic block sections");
>
>    // Set IsBeginSection and IsEndSection according to the assigned section IDs.
>    MF.assignBeginEndSections();
> @@ -321,14 +317,11 @@ bool BasicBlockSections::runOnMachineFunction(MachineFunction &MF) {
>    if (BBSectionsType == BasicBlockSection::List &&
>        hasInstrProfHashMismatch(MF))
>      return true;
> -  // Renumber blocks before sorting them. This is useful during sorting,
> -  // basic blocks in the same section will retain the default order.
> -  // This renumbering should also be done for basic block labels to match the
> -  // profiles with the correct blocks.
> -  // For LLVM_BB_ADDR_MAP versions 2 and higher, this renumbering serves
> -  // the
> diff erent purpose of accessing the original layout positions and
> -  // finding the original fallthroughs.
> -  // TODO: Change the above comment accordingly when version 1 is deprecated.
> +
> +  // Renumber blocks before sorting them for basic block sections.  This is
> +  // useful during sorting, basic blocks in the same section will retain the
> +  // default order.  This renumbering should also be done for basic block
> +  // labels to match the profiles with the correct blocks.
>    MF.RenumberBlocks();
>
>    if (BBSectionsType == BasicBlockSection::Labels) {
> @@ -338,8 +331,7 @@ bool BasicBlockSections::runOnMachineFunction(MachineFunction &MF) {
>
>    BBSectionsProfileReader = &getAnalysis<BasicBlockSectionsProfileReader>();
>
> -  // Map from BBID of blocks to their cluster information.
> -  DenseMap<unsigned, BBClusterInfo> FuncBBClusterInfo;
> +  std::vector<Optional<BBClusterInfo>> FuncBBClusterInfo;
>    if (BBSectionsType == BasicBlockSection::List &&
>        !getBBClusterInfoForFunction(MF, BBSectionsProfileReader,
>                                     FuncBBClusterInfo))
> @@ -379,8 +371,8 @@ bool BasicBlockSections::runOnMachineFunction(MachineFunction &MF) {
>      // If the two basic block are in the same section, the order is decided by
>      // their position within the section.
>      if (XSectionID.Type == MBBSectionID::SectionType::Default)
> -      return FuncBBClusterInfo.lookup(X.getBBIDOrNumber()).PositionInCluster <
> -             FuncBBClusterInfo.lookup(Y.getBBIDOrNumber()).PositionInCluster;
> +      return FuncBBClusterInfo[X.getNumber()]->PositionInCluster <
> +             FuncBBClusterInfo[Y.getNumber()]->PositionInCluster;
>      return X.getNumber() < Y.getNumber();
>    };
>
>
> diff  --git a/llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp b/llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp
> index 5bc8d82debc3..c2acf115998b 100644
> --- a/llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp
> +++ b/llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp
> @@ -93,23 +93,23 @@ static Error getBBClusterInfo(const MemoryBuffer *MBuf,
>        if (FI == ProgramBBClusterInfo.end())
>          return invalidProfileError(
>              "Cluster list does not follow a function name specifier.");
> -      SmallVector<StringRef, 4> BBIDs;
> -      S.split(BBIDs, ' ');
> +      SmallVector<StringRef, 4> BBIndexes;
> +      S.split(BBIndexes, ' ');
>        // Reset current cluster position.
>        CurrentPosition = 0;
> -      for (auto BBIDStr : BBIDs) {
> -        unsigned long long BBID;
> -        if (getAsUnsignedInteger(BBIDStr, 10, BBID))
> +      for (auto BBIndexStr : BBIndexes) {
> +        unsigned long long BBIndex;
> +        if (getAsUnsignedInteger(BBIndexStr, 10, BBIndex))
>            return invalidProfileError(Twine("Unsigned integer expected: '") +
> -                                     BBIDStr + "'.");
> -        if (!FuncBBIDs.insert(BBID).second)
> +                                     BBIndexStr + "'.");
> +        if (!FuncBBIDs.insert(BBIndex).second)
>            return invalidProfileError(Twine("Duplicate basic block id found '") +
> -                                     BBIDStr + "'.");
> -        if (BBID == 0 && CurrentPosition)
> +                                     BBIndexStr + "'.");
> +        if (!BBIndex && CurrentPosition)
>            return invalidProfileError("Entry BB (0) does not begin a cluster.");
>
> -        FI->second.emplace_back(
> -            BBClusterInfo{((unsigned)BBID), CurrentCluster, CurrentPosition++});
> +        FI->second.emplace_back(BBClusterInfo{
> +            ((unsigned)BBIndex), CurrentCluster, CurrentPosition++});
>        }
>        CurrentCluster++;
>      } else { // This is a function name specifier.
>
> diff  --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
> index 04746105bef0..e9cd5fdaa070 100644
> --- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp
> +++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
> @@ -272,13 +272,11 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) {
>        .Case("pcsections", MIToken::kw_pcsections)
>        .Case("cfi-type", MIToken::kw_cfi_type)
>        .Case("bbsections", MIToken::kw_bbsections)
> -      .Case("bb_id", MIToken::kw_bb_id)
>        .Case("unknown-size", MIToken::kw_unknown_size)
>        .Case("unknown-address", MIToken::kw_unknown_address)
>        .Case("distinct", MIToken::kw_distinct)
>        .Case("ir-block-address-taken", MIToken::kw_ir_block_address_taken)
> -      .Case("machine-block-address-taken",
> -            MIToken::kw_machine_block_address_taken)
> +      .Case("machine-block-address-taken", MIToken::kw_machine_block_address_taken)
>        .Default(MIToken::Identifier);
>  }
>
>
> diff  --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h
> index 839683555472..b1ffeac86514 100644
> --- a/llvm/lib/CodeGen/MIRParser/MILexer.h
> +++ b/llvm/lib/CodeGen/MIRParser/MILexer.h
> @@ -128,7 +128,6 @@ struct MIToken {
>      kw_pcsections,
>      kw_cfi_type,
>      kw_bbsections,
> -    kw_bb_id,
>      kw_unknown_size,
>      kw_unknown_address,
>      kw_ir_block_address_taken,
>
> diff  --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
> index 21c95e1d13c2..5adf42ad4258 100644
> --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
> +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
> @@ -500,7 +500,6 @@ class MIParser {
>    bool parseAlignment(uint64_t &Alignment);
>    bool parseAddrspace(unsigned &Addrspace);
>    bool parseSectionID(std::optional<MBBSectionID> &SID);
> -  bool parseBBID(std::optional<unsigned> &BBID);
>    bool parseOperandsOffset(MachineOperand &Op);
>    bool parseIRValue(const Value *&V);
>    bool parseMemoryOperandFlag(MachineMemOperand::Flags &Flags);
> @@ -664,18 +663,6 @@ bool MIParser::parseSectionID(std::optional<MBBSectionID> &SID) {
>    return false;
>  }
>
> -// Parse Machine Basic Block ID.
> -bool MIParser::parseBBID(std::optional<unsigned> &BBID) {
> -  assert(Token.is(MIToken::kw_bb_id));
> -  lex();
> -  unsigned Value = 0;
> -  if (getUnsigned(Value))
> -    return error("Unknown BB ID");
> -  BBID = Value;
> -  lex();
> -  return false;
> -}
> -
>  bool MIParser::parseBasicBlockDefinition(
>      DenseMap<unsigned, MachineBasicBlock *> &MBBSlots) {
>    assert(Token.is(MIToken::MachineBasicBlockLabel));
> @@ -692,7 +679,6 @@ bool MIParser::parseBasicBlockDefinition(
>    bool IsEHFuncletEntry = false;
>    std::optional<MBBSectionID> SectionID;
>    uint64_t Alignment = 0;
> -  std::optional<unsigned> BBID;
>    BasicBlock *BB = nullptr;
>    if (consumeIfPresent(MIToken::lparen)) {
>      do {
> @@ -733,10 +719,6 @@ bool MIParser::parseBasicBlockDefinition(
>          if (parseSectionID(SectionID))
>            return true;
>          break;
> -      case MIToken::kw_bb_id:
> -        if (parseBBID(BBID))
> -          return true;
> -        break;
>        default:
>          break;
>        }
> @@ -774,13 +756,6 @@ bool MIParser::parseBasicBlockDefinition(
>      MBB->setSectionID(SectionID.value());
>      MF.setBBSectionsType(BasicBlockSection::List);
>    }
> -  if (BBID.has_value()) {
> -    // BBSectionsType is set to `List` if any basic blocks has `SectionID`.
> -    // Here, we set it to `Labels` if it hasn't been set above.
> -    if (!MF.hasBBSections())
> -      MF.setBBSectionsType(BasicBlockSection::Labels);
> -    MBB->setBBID(BBID.value());
> -  }
>    return false;
>  }
>
>
> diff  --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp
> index c639f95c70e3..7a377b49f67b 100644
> --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp
> +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp
> @@ -563,11 +563,6 @@ void MachineBasicBlock::printName(raw_ostream &os, unsigned printNameFlags,
>        }
>        hasAttributes = true;
>      }
> -    if (getBBID().has_value()) {
> -      os << (hasAttributes ? ", " : " (");
> -      os << "bb_id " << *getBBID();
> -      hasAttributes = true;
> -    }
>    }
>
>    if (hasAttributes)
> @@ -1656,11 +1651,6 @@ bool MachineBasicBlock::sizeWithoutDebugLargerThan(unsigned Limit) const {
>    return false;
>  }
>
> -unsigned MachineBasicBlock::getBBIDOrNumber() const {
> -  uint8_t BBAddrMapVersion = getParent()->getContext().getBBAddrMapVersion();
> -  return BBAddrMapVersion < 2 ? getNumber() : *getBBID();
> -}
> -
>  const MBBSectionID MBBSectionID::ColdSectionID(MBBSectionID::SectionType::Cold);
>  const MBBSectionID
>      MBBSectionID::ExceptionSectionID(MBBSectionID::SectionType::Exception);
>
> diff  --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
> index 9defe36cc6b6..78b49c923662 100644
> --- a/llvm/lib/CodeGen/MachineFunction.cpp
> +++ b/llvm/lib/CodeGen/MachineFunction.cpp
> @@ -437,16 +437,8 @@ void MachineFunction::deleteMachineInstr(MachineInstr *MI) {
>  /// `new MachineBasicBlock'.
>  MachineBasicBlock *
>  MachineFunction::CreateMachineBasicBlock(const BasicBlock *bb) {
> -  MachineBasicBlock *MBB =
> -      new (BasicBlockRecycler.Allocate<MachineBasicBlock>(Allocator))
> -          MachineBasicBlock(*this, bb);
> -  // Set BBID for `-basic-block=sections=labels` and
> -  // `-basic-block-sections=list` to allow robust mapping of profiles to basic
> -  // blocks.
> -  if (Target.getBBSectionsType() == BasicBlockSection::Labels ||
> -      Target.getBBSectionsType() == BasicBlockSection::List)
> -    MBB->setBBID(NextBBID++);
> -  return MBB;
> +  return new (BasicBlockRecycler.Allocate<MachineBasicBlock>(Allocator))
> +             MachineBasicBlock(*this, bb);
>  }
>
>  /// Delete the given MachineBasicBlock.
>
> diff  --git a/llvm/lib/Object/ELF.cpp b/llvm/lib/Object/ELF.cpp
> index 80d1fc2227ac..93d3476ac3e1 100644
> --- a/llvm/lib/Object/ELF.cpp
> +++ b/llvm/lib/Object/ELF.cpp
> @@ -669,7 +669,7 @@ ELFFile<ELFT>::decodeBBAddrMap(const Elf_Shdr &Sec) const {
>        Version = Data.getU8(Cur);
>        if (!Cur)
>          break;
> -      if (Version > 2)
> +      if (Version > 1)
>          return createError("unsupported SHT_LLVM_BB_ADDR_MAP version: " +
>                             Twine(static_cast<int>(Version)));
>        Data.getU8(Cur); // Feature byte
> @@ -678,9 +678,8 @@ ELFFile<ELFT>::decodeBBAddrMap(const Elf_Shdr &Sec) const {
>      uint32_t NumBlocks = ReadULEB128AsUInt32();
>      std::vector<BBAddrMap::BBEntry> BBEntries;
>      uint32_t PrevBBEndOffset = 0;
> -    for (uint32_t BlockIndex = 0;
> -         !ULEBSizeErr && Cur && (BlockIndex < NumBlocks); ++BlockIndex) {
> -      uint32_t ID = Version >= 2 ? ReadULEB128AsUInt32() : BlockIndex;
> +    for (uint32_t BlockID = 0; !ULEBSizeErr && Cur && (BlockID < NumBlocks);
> +         ++BlockID) {
>        uint32_t Offset = ReadULEB128AsUInt32();
>        uint32_t Size = ReadULEB128AsUInt32();
>        uint32_t Metadata = ReadULEB128AsUInt32();
> @@ -689,7 +688,7 @@ ELFFile<ELFT>::decodeBBAddrMap(const Elf_Shdr &Sec) const {
>          Offset += PrevBBEndOffset;
>          PrevBBEndOffset = Offset + Size;
>        }
> -      BBEntries.push_back({ID, Offset, Size, Metadata});
> +      BBEntries.push_back({Offset, Size, Metadata});
>      }
>      FunctionEntries.push_back({Address, std::move(BBEntries)});
>    }
>
> diff  --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
> index d9c12f935232..53fee6af0c14 100644
> --- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
> +++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
> @@ -1396,7 +1396,7 @@ void ELFState<ELFT>::writeSectionContent(
>    for (const ELFYAML::BBAddrMapEntry &E : *Section.Entries) {
>      // Write version and feature values.
>      if (Section.Type == llvm::ELF::SHT_LLVM_BB_ADDR_MAP) {
> -      if (E.Version > 2)
> +      if (E.Version > 1)
>          WithColor::warning() << "unsupported SHT_LLVM_BB_ADDR_MAP version: "
>                               << static_cast<int>(E.Version)
>                               << "; encoding using the most recent version";
> @@ -1414,13 +1414,10 @@ void ELFState<ELFT>::writeSectionContent(
>      // Write all BBEntries.
>      if (!E.BBEntries)
>        continue;
> -    for (const ELFYAML::BBAddrMapEntry::BBEntry &BBE : *E.BBEntries) {
> -      if (Section.Type == llvm::ELF::SHT_LLVM_BB_ADDR_MAP && E.Version > 1)
> -        SHeader.sh_size += CBA.writeULEB128(BBE.ID);
> +    for (const ELFYAML::BBAddrMapEntry::BBEntry &BBE : *E.BBEntries)
>        SHeader.sh_size += CBA.writeULEB128(BBE.AddressOffset) +
>                           CBA.writeULEB128(BBE.Size) +
>                           CBA.writeULEB128(BBE.Metadata);
> -    }
>    }
>  }
>
>
> diff  --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
> index 6517fe13feaa..5513ce460dbc 100644
> --- a/llvm/lib/ObjectYAML/ELFYAML.cpp
> +++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
> @@ -1795,7 +1795,6 @@ void MappingTraits<ELFYAML::BBAddrMapEntry>::mapping(
>  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);
>
> diff  --git a/llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir
> deleted file mode 100644
> index 74a7bcf3ae82..000000000000
> --- a/llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir
> +++ /dev/null
> @@ -1,145 +0,0 @@
> -# Start after bbsections0-prepare and check that the BB address map is generated.
> -# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare  %s -o - | FileCheck %s -check-prefix=CHECK
> -
> -# How to generate the input:
> -# foo.cc
> -# int foo(bool k) {
> -#  if (k) return 1;
> -#  return 0;
> -# }
> -#
> -# clang -O0 -S -emit-llvm foo.cc
> -# llc < foo.ll -stop-after=bbsections-prepare -basic-block-sections=labels
> -
> -# CHECK: .section      .llvm_bb_addr_map,"o", at llvm_bb_addr_map,.text
> ---- |
> -  ; ModuleID = '<stdin>'
> -  source_filename = "/tmp/foo.cc"
> -  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
> -  target triple = "x86_64-pc-linux-gnu"
> -
> -  ; Function Attrs: mustprogress noinline nounwind optnone uwtable
> -  define dso_local noundef i32 @_Z3foob(i1 noundef zeroext %0) #0 {
> -    %2 = alloca i32, align 4
> -    %3 = alloca i8, align 1
> -    %4 = zext i1 %0 to i8
> -    store i8 %4, i8* %3, align 1
> -    %5 = load i8, i8* %3, align 1
> -    %6 = trunc i8 %5 to i1
> -    br i1 %6, label %7, label %8
> -
> -  7:                                                ; preds = %1
> -    store i32 1, i32* %2, align 4
> -    br label %9
> -
> -  8:                                                ; preds = %1
> -    store i32 0, i32* %2, align 4
> -    br label %9
> -
> -  9:                                                ; preds = %8, %7
> -    %10 = load i32, i32* %2, align 4
> -    ret i32 %10
> -  }
> -
> -  attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
> -
> -  !llvm.module.flags = !{!0, !1, !2, !3, !4}
> -  !llvm.ident = !{!5}
> -
> -  !0 = !{i32 1, !"wchar_size", i32 4}
> -  !1 = !{i32 7, !"PIC Level", i32 2}
> -  !2 = !{i32 7, !"PIE Level", i32 2}
> -  !3 = !{i32 7, !"uwtable", i32 1}
> -  !4 = !{i32 7, !"frame-pointer", i32 2}
> -  !5 = !{!"Debian clang version 14.0.6-2"}
> -
> -...
> ----
> -name:            _Z3foob
> -alignment:       16
> -exposesReturnsTwice: false
> -legalized:       false
> -regBankSelected: false
> -selected:        false
> -failedISel:      false
> -tracksRegLiveness: true
> -hasWinCFI:       false
> -callsEHReturn:   false
> -callsUnwindInit: false
> -hasEHCatchret:   false
> -hasEHScopes:     false
> -hasEHFunclets:   false
> -failsVerification: false
> -tracksDebugUserValues: true
> -registers:       []
> -liveins:
> -  - { reg: '$edi', virtual-reg: '' }
> -frameInfo:
> -  isFrameAddressTaken: false
> -  isReturnAddressTaken: false
> -  hasStackMap:     false
> -  hasPatchPoint:   false
> -  stackSize:       8
> -  offsetAdjustment: -8
> -  maxAlignment:    4
> -  adjustsStack:    false
> -  hasCalls:        false
> -  stackProtector:  ''
> -  functionContext: ''
> -  maxCallFrameSize: 0
> -  cvBytesOfCalleeSavedRegisters: 0
> -  hasOpaqueSPAdjustment: false
> -  hasVAStart:      false
> -  hasMustTailInVarArgFunc: false
> -  hasTailCall:     false
> -  localFrameSize:  0
> -  savePoint:       ''
> -  restorePoint:    ''
> -fixedStack:
> -  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, stack-id: default,
> -      callee-saved-register: '', callee-saved-restored: true, debug-info-variable: '',
> -      debug-info-expression: '', debug-info-location: '' }
> -stack:
> -  - { id: 0, name: '', type: default, offset: -24, size: 4, alignment: 4,
> -      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
> -      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
> -  - { id: 1, name: '', type: default, offset: -17, size: 1, alignment: 1,
> -      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
> -      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
> -callSites:       []
> -debugValueSubstitutions: []
> -constants:       []
> -machineFunctionInfo: {}
> -body:             |
> -  bb.0 (%ir-block.1, bb_id 0):
> -    successors: %bb.2(0x40000000), %bb.1(0x40000000)
> -    liveins: $edi
> -
> -    frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
> -    frame-setup CFI_INSTRUCTION def_cfa_offset 16
> -    frame-setup CFI_INSTRUCTION offset $rbp, -16
> -    $rbp = frame-setup MOV64rr $rsp
> -    frame-setup CFI_INSTRUCTION def_cfa_register $rbp
> -    renamable $dil = AND8ri renamable $dil, 1, implicit-def dead $eflags, implicit killed $edi, implicit-def $edi
> -    MOV8mr $rbp, 1, $noreg, -1, $noreg, renamable $dil, implicit killed $edi :: (store (s8) into %ir.3)
> -    TEST8mi $rbp, 1, $noreg, -1, $noreg, 1, implicit-def $eflags :: (load (s8) from %ir.3)
> -    JCC_1 %bb.2, 4, implicit killed $eflags
> -
> -  bb.1 (%ir-block.7, bb_id 1):
> -    successors: %bb.3(0x80000000)
> -
> -    MOV32mi $rbp, 1, $noreg, -8, $noreg, 1 :: (store (s32) into %ir.2)
> -    JMP_1 %bb.3
> -
> -  bb.2 (%ir-block.8, bb_id 2):
> -    successors: %bb.3(0x80000000)
> -
> -    MOV32mi $rbp, 1, $noreg, -8, $noreg, 0 :: (store (s32) into %ir.2)
> -
> -  bb.3 (%ir-block.9, bb_id 3):
> -    renamable $eax = MOV32rm $rbp, 1, $noreg, -8, $noreg :: (load (s32) from %ir.2)
> -    $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
> -    frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
> -    RET64 implicit $eax
> -
> -...
>
> diff  --git a/llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll b/llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll
> index 1767903561ce..b37a314ef65c 100644
> --- a/llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll
> +++ b/llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll
> @@ -1,9 +1,8 @@
>  ; Stop after bbsections-prepare and check MIR output for section type.
> -; RUN: llc < %s -O0 -mtriple=x86_64-pc-linux -function-sections -basic-block-sections=labels -stop-after=bbsections-prepare | FileCheck %s -check-prefix=BBLABELS
>  ; RUN: echo '!_Z3foob' > %t
>  ; RUN: echo '!!1' >> %t
>  ; RUN: echo '!!2' >> %t
> -; RUN: llc < %s -O0 -mtriple=x86_64-pc-linux -function-sections -basic-block-sections=%t -stop-after=bbsections-prepare | FileCheck %s -check-prefix=BBSECTIONS
> +; RUN: llc < %s -O0 -mtriple=x86_64-pc-linux -function-sections -basic-block-sections=%t -stop-after=bbsections-prepare | FileCheck %s -check-prefix=CHECK
>
>  @_ZTIb = external constant ptr
>  define dso_local i32 @_Z3foob(i1 zeroext %0) {
> @@ -28,12 +27,7 @@ define dso_local i32 @_Z3foob(i1 zeroext %0) {
>    ret i32 %10
>  }
>
> -; BBSECTIONS: bb.0 (%ir-block.1, bbsections Cold, bb_id 0):
> -; BBSECTIONS: bb.3 (%ir-block.9, bbsections Cold, bb_id 3):
> -; BBSECTIONS: bb.1 (%ir-block.7, bb_id 1)
> -; BBSECTIONS: bb.2 (%ir-block.8, bbsections 1, bb_id 2):
> -
> -; BBLABELS: bb.0 (%ir-block.1, bb_id 0):
> -; BBLABELS: bb.1 (%ir-block.7, bb_id 1):
> -; BBLABELS: bb.2 (%ir-block.8, bb_id 2):
> -; BBLABELS: bb.3 (%ir-block.9, bb_id 3):
> +; CHECK: bb.0 (%ir-block.1, bbsections Cold):
> +; CHECK: bb.3 (%ir-block.9, bbsections Cold):
> +; CHECK: bb.1 (%ir-block.7)
> +; CHECK: bb.2 (%ir-block.8, bbsections 1):
>
> diff  --git a/llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test b/llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test
> index 3f6bde333af0..0f2fa50ccd43 100644
> --- a/llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test
> +++ b/llvm/test/tools/llvm-readobj/ELF/bb-addr-map.test
> @@ -25,7 +25,6 @@
>  # CHECK-NEXT:     Name: <?>
>  # CHECK-NEXT:     BB entries [
>  # CHECK-NEXT:       {
> -# CHECK-NEXT:         ID: 0
>  # CHECK-NEXT:         Offset: 0x0
>  # CHECK-NEXT:         Size: 0x1
>  # CHECK-NEXT:         HasReturn: No
> @@ -34,7 +33,6 @@
>  # CHECK-NEXT:         CanFallThrough: No
>  # CHECK-NEXT:       }
>  # CHECK-NEXT:       {
> -# CHECK-NEXT:         ID: 2
>  # CHECK-NEXT:         Offset: 0x4
>  # CHECK-NEXT:         Size: 0x4
>  # CHECK-NEXT:         HasReturn: Yes
> @@ -49,7 +47,6 @@
>  # CHECK-NEXT:     Name: foo
>  # CHECK-NEXT:     BB entries [
>  # CHECK-NEXT:       {
> -# CHECK-NEXT:         ID: 4
>  # CHECK-NEXT:         Offset: 0x6
>  # CHECK-NEXT:         Size: 0x7
>  # CHECK-NEXT:         HasReturn: No
> @@ -73,7 +70,6 @@
>  # TRUNCATED-NEXT:     Name: bar
>  # TRUNCATED-NEXT:     BB entries [
>  # TRUNCATED-NEXT:       {
> -# TRUNCATED-NEXT:         ID: 6
>  # TRUNCATED-NEXT:         Offset: 0x9
>  # TRUNCATED-NEXT:         Size: 0xA
>  # TRUNCATED-NEXT:         HasReturn: Yes
> @@ -82,7 +78,6 @@
>  # TRUNCATED-NEXT:         CanFallThrough: Yes
>  # TRUNCATED-NEXT:       }
>  # TRUNCATED-NEXT:       {
> -# TRUNCATED-NEXT:         ID: 7
>  # TRUNCATED-NEXT:         Offset: 0x1F
>  # TRUNCATED-NEXT:         Size: 0xD
>  # TRUNCATED-NEXT:         HasReturn: No
> @@ -111,22 +106,19 @@ Sections:
>      ShSize: [[SIZE=<none>]]
>      Link:   .text
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Address: [[ADDR=0x11111]]
>          BBEntries:
> -          - ID:            0
> -            AddressOffset: 0x0
> +          - AddressOffset: 0x0
>              Size:          0x1
>              Metadata:      0xF0000002
> -          - ID:            2
> -            AddressOffset: 0x3
> +          - AddressOffset: 0x3
>              Size:          0x4
>              Metadata:      0x5
> -      - Version: 2
> +      - Version: 1
>          Address: 0x22222
>          BBEntries:
> -          - ID:            4
> -            AddressOffset: 0x6
> +          - AddressOffset: 0x6
>              Size:          0x7
>              Metadata:      0x8
>    - Name: dummy_section
> @@ -136,15 +128,13 @@ Sections:
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Link: .text.bar
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Address: 0x33333
>          BBEntries:
> -          - ID:            6
> -            AddressOffset: 0x9
> +          - AddressOffset: 0x9
>              Size:          0xa
>              Metadata:      0xb
> -          - ID:            7
> -            AddressOffset: 0xc
> +          - AddressOffset: 0xc
>              Size:          0xd
>              Metadata:      0xe
>  Symbols:
> @@ -175,7 +165,6 @@ Symbols:
>  # V0-NEXT:     Name: foo
>  # V0-NEXT:     BB entries [
>  # V0-NEXT:       {
> -# V0-NEXT:         ID: 0
>  # V0-NEXT:         Offset: 0x1
>  # V0-NEXT:         Size: 0x2
>  # V0-NEXT:         HasReturn:
> @@ -184,7 +173,6 @@ Symbols:
>  # V0-NEXT:         CanFallThrough:
>  # V0-NEXT:       }
>  # V0-NEXT:       {
> -# V0-NEXT:         ID: 1
>  # V0-NEXT:         Offset: 0x4
>  # V0-NEXT:         Size: 0x5
>  # V0-NEXT:         HasReturn:
> @@ -195,36 +183,6 @@ Symbols:
>  # V0-NEXT:     ]
>  # V0-NEXT:   }
>
> -## Check version 1 (without BB IDs).
> -# RUN: yaml2obj --docnum=2 %s -DVERSION=1 -DSECTION_TYPE=SHT_LLVM_BB_ADDR_MAP -o %t3
> -# RUN: llvm-readobj %t3 --bb-addr-map 2>&1 | FileCheck %s --check-prefix=V1
> -
> -# V1:      BBAddrMap [
> -# V1-NEXT:   Function {
> -# V1-NEXT:     At:   0x11111
> -# V1-NEXT:     Name: foo
> -# V1-NEXT:     BB entries [
> -# V1-NEXT:       {
> -# V1-NEXT:         ID: 0
> -# V1-NEXT:         Offset: 0x1
> -# V1-NEXT:         Size: 0x2
> -# V1-NEXT:         HasReturn:
> -# V1-NEXT:         HasTailCall:
> -# V1-NEXT:         IsEHPad:
> -# V1-NEXT:         CanFallThrough:
> -# V1-NEXT:       }
> -# V1-NEXT:       {
> -# V1-NEXT:         ID: 1
> -# V1-NEXT:         Offset: 0x7
> -# V1-NEXT:         Size: 0x5
> -# V1-NEXT:         HasReturn:
> -# V1-NEXT:         HasTailCall:
> -# V1-NEXT:         IsEHPad:
> -# V1-NEXT:         CanFallThrough:
> -# V1-NEXT:       }
> -# V1-NEXT:     ]
> -# V1-NEXT:   }
> -
>  --- !ELF
>  FileHeader:
>    Class: ELFCLASS64
>
> diff  --git a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
> index 629c29e202ae..fcd650d3331c 100644
> --- a/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
> +++ b/llvm/test/tools/obj2yaml/ELF/bb-addr-map.yaml
> @@ -15,27 +15,23 @@
>  # VALID-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP
>  # VALID-NEXT:     Entries:
>  ## The 'Address' field is omitted when it's zero.
> -# VALID-NEXT:       - Version: 2
> +# VALID-NEXT:       - Version: 1
>  # VALID-NEXT:         Feature: 0xFF
>  # VALID-NEXT:         BBEntries:
> -# VALID-NEXT:           - ID:            0
> -# VALID-NEXT:             AddressOffset: 0x1
> +# VALID-NEXT:           - AddressOffset: 0x1
>  # VALID-NEXT:             Size:          0x2
>  # VALID-NEXT:             Metadata:      0x3
> -# VALID-NEXT:           - ID:            2
> -# VALID-NEXT:             AddressOffset: 0x4
> +# VALID-NEXT:           - AddressOffset: 0x4
>  # VALID-NEXT:             Size:          0x5
>  # VALID-NEXT:             Metadata:      0x6
> -# VALID-NEXT:           - ID:            4
> -# VALID-NEXT:             AddressOffset: 0xFFFFFFFFFFFFFFF7
> +# VALID-NEXT:           - AddressOffset: 0xFFFFFFFFFFFFFFF7
>  # VALID-NEXT:             Size:          0xFFFFFFFFFFFFFFF8
>  # VALID-NEXT:             Metadata:      0xFFFFFFFFFFFFFFF9
> -# VALID-NEXT:       - Version: 2
> +# VALID-NEXT:       - Version: 1
>  # VALID-NEXT:         Feature: 0xEE
>  # VALID-NEXT:         Address: 0xFFFFFFFFFFFFFF20
>  # VALID-NEXT:         BBEntries:
> -# VALID-NEXT:           - ID:            6
> -# VALID-NEXT:             AddressOffset: 0xA
> +# VALID-NEXT:           - AddressOffset: 0xA
>  # VALID-NEXT:             Size:          0xB
>  # VALID-NEXT:             Metadata:      0xC
>
> @@ -49,29 +45,25 @@ Sections:
>      Type:   SHT_LLVM_BB_ADDR_MAP
>      ShSize: [[SIZE=<none>]]
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Feature: 0xFF
>          Address: 0x0
>          BBEntries:
> -          - ID:            0
> -            AddressOffset: 0x1
> +          - AddressOffset: 0x1
>              Size:          0x2
>              Metadata:      0x3
> -          - ID:            2
> -            AddressOffset: 0x4
> +          - AddressOffset: 0x4
>              Size:          0x5
>              Metadata:      0x6
> -          - ID:            4
> -            AddressOffset: 0xFFFFFFFFFFFFFFF7
> +          - AddressOffset: 0xFFFFFFFFFFFFFFF7
>              Size:          0xFFFFFFFFFFFFFFF8
>              Metadata:      0xFFFFFFFFFFFFFFF9
> -      - Version:   2
> +      - Version:   1
>          Feature:   0xEE
>          Address:   0xFFFFFFFFFFFFFF20
>          NumBlocks: [[NUMBLOCKS=<none>]]
>          BBEntries:
> -          - ID:            6
> -            AddressOffset: 0xA
> +          - AddressOffset: 0xA
>              Size:          0xB
>              Metadata:      0xC
>
> @@ -117,8 +109,7 @@ Sections:
>  ## Fields 'Address' and 'Feature' are omitted when they are zero.
>  # MULTI-NEXT:       - Version: 0
>  # MULTI-NEXT:         BBEntries:
> -# MULTI-NEXT:           - ID:            0
> -# MULTI-NEXT:             AddressOffset: 0x1
> +# MULTI-NEXT:           - AddressOffset: 0x1
>  # MULTI-NEXT:             Size:          0x2
>  # MULTI-NEXT:             Metadata:      0x3
>  # MULTI-NEXT:   - Name: '.llvm_bb_addr_map (1)'
> @@ -189,8 +180,7 @@ Sections:
>  # V0-NEXT:       - Version: 0
>  # V0-NEXT:         Address: 0x1111
>  # V0-NEXT:         BBEntries:
> -# V0-NEXT:           - ID:            0
> -# V0-NEXT:             AddressOffset: 0x1
> +# V0-NEXT:           - AddressOffset: 0x1
>  # V0-NEXT:             Size:          0x2
>  # V0-NEXT:             Metadata:      0x3
>
> @@ -209,47 +199,3 @@ Sections:
>            - AddressOffset: 0x1
>              Size:          0x2
>              Metadata:      0x3
> -
> -## Check obj2yaml for version 1.
> -# RUN: yaml2obj --docnum=5 %s -o %t7
> -# RUN: obj2yaml %t7 | FileCheck %s --check-prefix=V1
> -
> -# V1:      --- !ELF
> -# V1-NEXT: FileHeader:
> -# V1-NEXT:   Class: ELFCLASS64
> -# V1-NEXT:   Data:  ELFDATA2LSB
> -# V1-NEXT:   Type:  ET_EXEC
> -# V1-NEXT: Sections:
> -# V1-NEXT:   - Name: .llvm_bb_addr_map
> -# V1-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP
> -# V1-NEXT:     Entries:
> -# V1-NEXT:       - Version: 1
> -# V1-NEXT:         Address: 0x1111
> -# V1-NEXT:         BBEntries:
> -# V1-NEXT:           - ID:            0
> -# V1-NEXT:             AddressOffset: 0x1
> -# V1-NEXT:             Size:          0x2
> -# V1-NEXT:             Metadata:      0x3
> -# V1-NEXT:           - ID:            1
> -# V1-NEXT:             AddressOffset: 0x4
> -# V1-NEXT:             Size:          0x5
> -# V1-NEXT:             Metadata:      0x6
> -
> ---- !ELF
> -FileHeader:
> -  Class: ELFCLASS64
> -  Data:  ELFDATA2LSB
> -  Type:  ET_EXEC
> -Sections:
> -  - Name: .llvm_bb_addr_map
> -    Type: SHT_LLVM_BB_ADDR_MAP
> -    Entries:
> -      - Version: 1
> -        Address: 0x1111
> -        BBEntries:
> -          - AddressOffset: 0x1
> -            Size:          0x2
> -            Metadata:      0x3
> -          - AddressOffset: 0x4
> -            Size:          0x5
> -            Metadata:      0x6
>
> diff  --git a/llvm/test/tools/yaml2obj/ELF/bb-addr-map.yaml b/llvm/test/tools/yaml2obj/ELF/bb-addr-map.yaml
> index 2086dc53208b..1ca30f9bb4ba 100644
> --- a/llvm/test/tools/yaml2obj/ELF/bb-addr-map.yaml
> +++ b/llvm/test/tools/yaml2obj/ELF/bb-addr-map.yaml
> @@ -12,13 +12,13 @@
>  # CHECK-NEXT:   ]
>  # CHECK-NEXT:   Address: 0x0
>  # CHECK-NEXT:   Offset: 0x40
> -# CHECK-NEXT:   Size: 13
> +# CHECK-NEXT:   Size: 12
>  # CHECK-NEXT:   Link: 0
>  # CHECK-NEXT:   Info: 0
>  # CHECK-NEXT:   AddressAlignment: 0
>  # CHECK-NEXT:   EntrySize: 0
>  # CHECK-NEXT:   SectionData (
> -# CHECK-NEXT:     0000: 00000000 00000000 01010203 04
> +# CHECK-NEXT:     0000: 00000000 00000000 01010203
>  # CHECK-NEXT:   )
>  # CHECK-NEXT: }
>
> @@ -36,7 +36,7 @@
>  # Case 4: Specify Entries.
>  # CHECK:        Name: .llvm_bb_addr_map (1)
>  # CHECK:        SectionData (
> -# CHECK-NEXT:     0000: 02002000 00000000 0000010B 010203
> +# CHECK-NEXT:     0000: 01002000 00000000 00000101 0203
>  # CHECK-NEXT:   )
>
>  # Case 5: Specify Entries and omit the Address field.
> @@ -44,13 +44,13 @@
>  # CHECK:        Address:
>  # CHECK-SAME:   {{^ 0x0$}}
>  # CHECK:        SectionData (
> -# CHECK-NEXT:     0000: 02000000 00000000 0000010C 010203
> +# CHECK-NEXT:     0000: 00000000 00000000 00000101 0203
>  # CHECK-NEXT:   )
>
>  # Case 6: Override the NumBlocks field.
>  # CHECK:        Name: .llvm_bb_addr_map (1)
>  # CHECK:        SectionData (
> -# CHECK-NEXT:     0000: 02002000 00000000 0000020D 010203
> +# CHECK-NEXT:     0000: 01002000 00000000 00000201 0203
>  # CHECK-NEXT:   )
>
>  --- !ELF
> @@ -67,7 +67,7 @@ Sections:
>  ##  Specify Content.
>    - Name:    '.llvm_bb_addr_map (1)'
>      Type:    SHT_LLVM_BB_ADDR_MAP
> -    Content: "00000000000000000101020304"
> +    Content: "000000000000000001010203"
>
>  ## 2) We can produce an empty .llvm_bb_addr_map section from a description
>  ##    with empty section content.
> @@ -85,11 +85,10 @@ Sections:
>    - Name: '.llvm_bb_addr_map (4)'
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Address: 0x0000000000000020
>          BBEntries:
> -          - ID:            11
> -            AddressOffset: 0x00000001
> +          - AddressOffset: 0x00000001
>              Size:          0x00000002
>              Metadata:      0x00000003
>
> @@ -98,10 +97,9 @@ Sections:
>    - Name: '.llvm_bb_addr_map (5)'
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Entries:
> -      - Version: 2
> +      - Version: 0
>          BBEntries:
> -          - ID:            12
> -            AddressOffset: 0x00000001
> +          - AddressOffset: 0x00000001
>              Size:          0x00000002
>              Metadata:      0x00000003
>
> @@ -110,12 +108,11 @@ Sections:
>    - Name: '.llvm_bb_addr_map (6)'
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Entries:
> -      - Version:   2
> +      - Version:   1
>          Address:   0x0000000000000020
>          NumBlocks: 2
>          BBEntries:
> -          - ID:            13
> -            AddressOffset: 0x00000001
> +          - AddressOffset: 0x00000001
>              Size:          0x00000002
>              Metadata:      0x00000003
>
> @@ -140,7 +137,7 @@ Sections:
>
>  ## Check that yaml2obj generates a warning when we use unsupported versions.
>  # RUN: yaml2obj --docnum=3  %s 2>&1 | FileCheck %s --check-prefix=INVALID-VERSION
> -# INVALID-VERSION: warning: unsupported SHT_LLVM_BB_ADDR_MAP version: 3; encoding using the most recent version
> +# INVALID-VERSION: warning: unsupported SHT_LLVM_BB_ADDR_MAP version: 2; encoding using the most recent version
>
>  --- !ELF
>  FileHeader:
> @@ -152,4 +149,4 @@ Sections:
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Entries:
>  ##  Specify unsupported version
> -      - Version: 3
> +      - Version: 2
>
> diff  --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
> index d730375a8ac5..7d2b557efd9b 100644
> --- a/llvm/tools/llvm-readobj/ELFDumper.cpp
> +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
> @@ -7135,7 +7135,6 @@ template <class ELFT> void LLVMELFDumper<ELFT>::printBBAddrMaps() {
>        ListScope L(W, "BB entries");
>        for (const BBAddrMap::BBEntry &BBE : AM.BBEntries) {
>          DictScope L(W);
> -        W.printNumber("ID", BBE.ID);
>          W.printHex("Offset", BBE.Offset);
>          W.printHex("Size", BBE.Size);
>          W.printBoolean("HasReturn", BBE.HasReturn);
>
> diff  --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp
> index b55cecebf32c..0c4e841c4746 100644
> --- a/llvm/tools/obj2yaml/elf2yaml.cpp
> +++ b/llvm/tools/obj2yaml/elf2yaml.cpp
> @@ -897,7 +897,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
>    while (Cur && Cur.tell() < Content.size()) {
>      if (Shdr->sh_type == ELF::SHT_LLVM_BB_ADDR_MAP) {
>        Version = Data.getU8(Cur);
> -      if (Cur && Version > 2)
> +      if (Cur && Version > 1)
>          return createStringError(
>              errc::invalid_argument,
>              "invalid SHT_LLVM_BB_ADDR_MAP section version: " +
> @@ -908,12 +908,11 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {
>      uint64_t NumBlocks = Data.getULEB128(Cur);
>      std::vector<ELFYAML::BBAddrMapEntry::BBEntry> BBEntries;
>      // Read the specified number of BB entries, or until decoding fails.
> -    for (uint64_t BlockIndex = 0; Cur && BlockIndex < NumBlocks; ++BlockIndex) {
> -      uint32_t ID = Version >= 2 ? Data.getULEB128(Cur) : BlockIndex;
> +    for (uint64_t BlockID = 0; Cur && BlockID < NumBlocks; ++BlockID) {
>        uint64_t Offset = Data.getULEB128(Cur);
>        uint64_t Size = Data.getULEB128(Cur);
>        uint64_t Metadata = Data.getULEB128(Cur);
> -      BBEntries.push_back({ID, Offset, Size, Metadata});
> +      BBEntries.push_back({Offset, Size, Metadata});
>      }
>      Entries.push_back(
>          {Version, Feature, Address, /*NumBlocks=*/{}, std::move(BBEntries)});
>
> diff  --git a/llvm/unittests/Object/ELFObjectFileTest.cpp b/llvm/unittests/Object/ELFObjectFileTest.cpp
> index 25b187f60343..2591a70b3d58 100644
> --- a/llvm/unittests/Object/ELFObjectFileTest.cpp
> +++ b/llvm/unittests/Object/ELFObjectFileTest.cpp
> @@ -528,7 +528,7 @@ TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
>    // Check that we can detect unsupported versions.
>    SmallString<128> UnsupportedVersionYamlString(CommonYamlString);
>    UnsupportedVersionYamlString += R"(
> -        Version: 3
> +        Version: 2
>          BBEntries:
>            - AddressOffset: 0x0
>              Size:          0x1
> @@ -536,14 +536,13 @@ TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
>  )";
>
>    DoCheck(UnsupportedVersionYamlString,
> -          "unsupported SHT_LLVM_BB_ADDR_MAP version: 3");
> +          "unsupported SHT_LLVM_BB_ADDR_MAP version: 2");
>
>    SmallString<128> CommonVersionedYamlString(CommonYamlString);
>    CommonVersionedYamlString += R"(
> -        Version: 2
> +        Version: 1
>          BBEntries:
> -          - ID:            1
> -            AddressOffset: 0x0
> +          - AddressOffset: 0x0
>              Size:          0x1
>              Metadata:      0x2
>  )";
> @@ -552,9 +551,9 @@ TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
>    // truncated.
>    SmallString<128> TruncatedYamlString(CommonVersionedYamlString);
>    TruncatedYamlString += R"(
> -    ShSize: 0xb
> +    ShSize: 0xa
>  )";
> -  DoCheck(TruncatedYamlString, "unable to decode LEB128 at offset 0x0000000b: "
> +  DoCheck(TruncatedYamlString, "unable to decode LEB128 at offset 0x0000000a: "
>                                 "malformed uleb128, extends past end");
>
>    // Check that we can detect when the encoded BB entry fields exceed the UINT32
> @@ -562,32 +561,29 @@ TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
>    SmallVector<SmallString<128>, 3> OverInt32LimitYamlStrings(
>        3, CommonVersionedYamlString);
>    OverInt32LimitYamlStrings[0] += R"(
> -          - ID:            1
> -            AddressOffset: 0x100000000
> +          - AddressOffset: 0x100000000
>              Size:          0xFFFFFFFF
>              Metadata:      0xFFFFFFFF
>  )";
>
>    OverInt32LimitYamlStrings[1] += R"(
> -          - ID:            2
> -            AddressOffset: 0xFFFFFFFF
> +          - AddressOffset: 0xFFFFFFFF
>              Size:          0x100000000
>              Metadata:      0xFFFFFFFF
>  )";
>
>    OverInt32LimitYamlStrings[2] += R"(
> -          - ID:            3
> -            AddressOffset: 0xFFFFFFFF
> +          - AddressOffset: 0xFFFFFFFF
>              Size:          0xFFFFFFFF
>              Metadata:      0x100000000
>  )";
>
>    DoCheck(OverInt32LimitYamlStrings[0],
> -          "ULEB128 value at offset 0x10 exceeds UINT32_MAX (0x100000000)");
> +          "ULEB128 value at offset 0xe exceeds UINT32_MAX (0x100000000)");
>    DoCheck(OverInt32LimitYamlStrings[1],
> -          "ULEB128 value at offset 0x15 exceeds UINT32_MAX (0x100000000)");
> +          "ULEB128 value at offset 0x13 exceeds UINT32_MAX (0x100000000)");
>    DoCheck(OverInt32LimitYamlStrings[2],
> -          "ULEB128 value at offset 0x1a exceeds UINT32_MAX (0x100000000)");
> +          "ULEB128 value at offset 0x18 exceeds UINT32_MAX (0x100000000)");
>
>    // Check the proper error handling when the section has fields exceeding
>    // UINT32 and is also truncated. This is for checking that we don't generate
> @@ -596,24 +592,24 @@ TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
>        3, OverInt32LimitYamlStrings[1]);
>    // Truncate before the end of the 5-byte field.
>    OverInt32LimitAndTruncated[0] += R"(
> -    ShSize: 0x19
> +    ShSize: 0x17
>  )";
>    // Truncate at the end of the 5-byte field.
>    OverInt32LimitAndTruncated[1] += R"(
> -    ShSize: 0x1a
> +    ShSize: 0x18
>  )";
>    // Truncate after the end of the 5-byte field.
>    OverInt32LimitAndTruncated[2] += R"(
> -    ShSize: 0x1b
> +    ShSize: 0x19
>  )";
>
>    DoCheck(OverInt32LimitAndTruncated[0],
> -          "unable to decode LEB128 at offset 0x00000015: malformed uleb128, "
> +          "unable to decode LEB128 at offset 0x00000013: malformed uleb128, "
>            "extends past end");
>    DoCheck(OverInt32LimitAndTruncated[1],
> -          "ULEB128 value at offset 0x15 exceeds UINT32_MAX (0x100000000)");
> +          "ULEB128 value at offset 0x13 exceeds UINT32_MAX (0x100000000)");
>    DoCheck(OverInt32LimitAndTruncated[2],
> -          "ULEB128 value at offset 0x15 exceeds UINT32_MAX (0x100000000)");
> +          "ULEB128 value at offset 0x13 exceeds UINT32_MAX (0x100000000)");
>
>    // Check for proper error handling when the 'NumBlocks' field is overridden
>    // with an out-of-range value.
> @@ -639,57 +635,41 @@ TEST(ELFObjectFileTest, ReadBBAddrMap) {
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Link: 1
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Address: 0x11111
>          BBEntries:
> -          - ID:            1
> -            AddressOffset: 0x0
> +          - AddressOffset: 0x0
>              Size:          0x1
>              Metadata:      0x2
>    - Name: .llvm_bb_addr_map_2
>      Type: SHT_LLVM_BB_ADDR_MAP
>      Link: 1
>      Entries:
> -      - Version: 2
> +      - Version: 1
>          Address: 0x22222
>          BBEntries:
> -          - ID:            2
> -            AddressOffset: 0x0
> +          - AddressOffset: 0x0
>              Size:          0x2
>              Metadata:      0x4
> -  - Name: .llvm_bb_addr_map_3
> -    Type: SHT_LLVM_BB_ADDR_MAP
> -    Link: 2
> +  - Name: .llvm_bb_addr_map
> +    Type: SHT_LLVM_BB_ADDR_MAP_V0
> +  # Link: 0 (by default)
>      Entries:
> -      - Version: 1
> +      - Version: 0
>          Address: 0x33333
>          BBEntries:
> -          - ID:            0
> -            AddressOffset: 0x0
> +          - AddressOffset: 0x0
>              Size:          0x3
>              Metadata:      0x6
> -  - Name: .llvm_bb_addr_map_4
> -    Type: SHT_LLVM_BB_ADDR_MAP_V0
> -  # Link: 0 (by default, can be overriden)
> -    Entries:
> -      - Version: 0
> -        Address: 0x44444
> -        BBEntries:
> -          - ID:            0
> -            AddressOffset: 0x0
> -            Size:          0x4
> -            Metadata:      0x8
>  )");
>
> -  BBAddrMap E1 = {0x11111, {{1, 0x0, 0x1, 0x2}}};
> -  BBAddrMap E2 = {0x22222, {{2, 0x0, 0x2, 0x4}}};
> -  BBAddrMap E3 = {0x33333, {{0, 0x0, 0x3, 0x6}}};
> -  BBAddrMap E4 = {0x44444, {{0, 0x0, 0x4, 0x8}}};
> +  BBAddrMap E1 = {0x11111, {{0x0, 0x1, 0x2}}};
> +  BBAddrMap E2 = {0x22222, {{0x0, 0x2, 0x4}}};
> +  BBAddrMap E3 = {0x33333, {{0x0, 0x3, 0x6}}};
>
> -  std::vector<BBAddrMap> Section0BBAddrMaps = {E4};
> -  std::vector<BBAddrMap> Section1BBAddrMaps = {E3};
> -  std::vector<BBAddrMap> Section2BBAddrMaps = {E1, E2};
> -  std::vector<BBAddrMap> AllBBAddrMaps = {E1, E2, E3, E4};
> +  std::vector<BBAddrMap> Section0BBAddrMaps = {E3};
> +  std::vector<BBAddrMap> Section1BBAddrMaps = {E1, E2};
> +  std::vector<BBAddrMap> AllBBAddrMaps = {E1, E2, E3};
>
>    auto DoCheckSucceeds = [&](StringRef YamlString,
>                               std::optional<unsigned> TextSectionIndex,
> @@ -726,11 +706,10 @@ TEST(ELFObjectFileTest, ReadBBAddrMap) {
>    DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/std::nullopt,
>                    AllBBAddrMaps);
>    DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/0, Section0BBAddrMaps);
> -  DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/2, Section1BBAddrMaps);
> -  DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/1, Section2BBAddrMaps);
> +  DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/1, Section1BBAddrMaps);
>    // Check that when no bb-address-map section is found for a text section,
>    // we return an empty result.
> -  DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/3, {});
> +  DoCheckSucceeds(CommonYamlString, /*TextSectionIndex=*/2, {});
>
>    // Check that we detect when a bb-addr-map section is linked to an invalid
>    // (not present) section.
> @@ -739,9 +718,9 @@ TEST(ELFObjectFileTest, ReadBBAddrMap) {
>      Link: 10
>  )";
>
> -  DoCheckFails(InvalidLinkedYamlString, /*TextSectionIndex=*/4,
> +  DoCheckFails(InvalidLinkedYamlString, /*TextSectionIndex=*/1,
>                 "unable to get the linked-to section for "
> -               "SHT_LLVM_BB_ADDR_MAP_V0 section with index 4: invalid section "
> +               "SHT_LLVM_BB_ADDR_MAP_V0 section with index 3: invalid section "
>                 "index: 10");
>    // Linked sections are not checked when we don't target a specific text
>    // section.
> @@ -755,12 +734,12 @@ TEST(ELFObjectFileTest, ReadBBAddrMap) {
>  )";
>
>    DoCheckFails(TruncatedYamlString, /*TextSectionIndex=*/std::nullopt,
> -               "unable to read SHT_LLVM_BB_ADDR_MAP_V0 section with index 4: "
> +               "unable to read SHT_LLVM_BB_ADDR_MAP_V0 section with index 3: "
>                 "unable to decode LEB128 at offset 0x00000008: malformed "
>                 "uleb128, extends past end");
>    // Check that we can read the other section's bb-address-maps which are
>    // valid.
> -  DoCheckSucceeds(TruncatedYamlString, /*TextSectionIndex=*/2,
> +  DoCheckSucceeds(TruncatedYamlString, /*TextSectionIndex=*/1,
>                    Section1BBAddrMaps);
>  }
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list