[PATCH] D112175: [NFC] Add llvm::StaticVector ADT

James Player via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 27 12:02:50 PDT 2021


jplayer-nv added a comment.

Here's another example of a possible StaticVector conversion:

llvm/lib/MC/WinCOFFObjectWriter.cpp

  void WinCOFFObjectWriter::SetSectionName(COFFSection &S) {
  ...
    uint64_t StringTableEntry = Strings.getOffset(S.Name);
    if (StringTableEntry <= Max7DecimalOffset) {
      SmallVector<char, COFF::NameSize> Buffer;
      Twine('/').concat(Twine(StringTableEntry)).toVector(Buffer);
      assert(Buffer.size() <= COFF::NameSize && Buffer.size() >= 2);
      std::memcpy(S.Header.Name, Buffer.data(), Buffer.size());
      return;
    }
  ...
  }

It's not as simple as a container type substitution since I haven't defined a `raw_pwrite_stream` for `StaticVector`.  Assuming that's done, this shouldn't be a problem.

One nice benefit is that the container implicitly enforces:

  assert(Buffer.size() <= COFF::NameSize);

Will keep searching.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112175/new/

https://reviews.llvm.org/D112175



More information about the llvm-commits mailing list