[lld] r283340 - Simplify setting the Live bit in SectionPiece. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 5 10:41:45 PDT 2016


On Wed, Oct 5, 2016 at 10:02 AM, Rafael Espindola via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rafael
> Date: Wed Oct  5 12:02:09 2016
> New Revision: 283340
>
> URL: http://llvm.org/viewvc/llvm-project?rev=283340&view=rev
> Log:
> Simplify setting the Live bit in SectionPiece. NFC.
>
> Modified:
>     lld/trunk/ELF/InputSection.cpp
>     lld/trunk/ELF/InputSection.h
>
> Modified: lld/trunk/ELF/InputSection.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> InputSection.cpp?rev=283340&r1=283339&r2=283340&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/InputSection.cpp (original)
> +++ lld/trunk/ELF/InputSection.cpp Wed Oct  5 12:02:09 2016
> @@ -533,12 +533,13 @@ std::vector<SectionPiece>
>  MergeInputSection<ELFT>::splitStrings(ArrayRef<uint8_t> Data, size_t
> EntSize) {
>    std::vector<SectionPiece> V;
>    size_t Off = 0;
> +  bool IsAlloca = this->getSectionHdr()->sh_flags & SHF_ALLOC;
>    while (!Data.empty()) {
>      size_t End = findNull(Data, EntSize);
>      if (End == StringRef::npos)
>        fatal(getName(this) + ": string is not null terminated");
>      size_t Size = End + EntSize;
> -    V.emplace_back(Off, Data.slice(0, Size));
> +    V.emplace_back(Off, Data.slice(0, Size), !IsAlloca);
>      Data = Data.slice(Size);
>      Off += Size;
>    }
> @@ -573,16 +574,9 @@ template <class ELFT> void MergeInputSec
>    else
>      this->Pieces = splitNonStrings(Data, EntSize);
>
> -  if (Config->GcSections) {
> -    if (this->getSectionHdr()->sh_flags & SHF_ALLOC) {
> -      for (uintX_t Off : LiveOffsets)
> -        this->getSectionPiece(Off)->Live = true;
> -      return;
> -    }
> -
> -    for (SectionPiece &Piece : this->Pieces)
> -      Piece.Live = true;
> -  }
> +  if (Config->GcSections && this->getSectionHdr()->sh_flags & SHF_ALLOC)
>

nit: add () around &.


> +    for (uintX_t Off : LiveOffsets)
> +      this->getSectionPiece(Off)->Live = true;
>  }
>
>  template <class ELFT>
>
> Modified: lld/trunk/ELF/InputSection.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> InputSection.h?rev=283340&r1=283339&r2=283340&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/InputSection.h (original)
> +++ lld/trunk/ELF/InputSection.h Wed Oct  5 12:02:09 2016
> @@ -122,9 +122,9 @@ template <class ELFT> InputSectionBase<E
>
>  // SectionPiece represents a piece of splittable section contents.
>  struct SectionPiece {
> -  SectionPiece(size_t Off, ArrayRef<uint8_t> Data)
> +  SectionPiece(size_t Off, ArrayRef<uint8_t> Data, bool Live = false)
>        : InputOff(Off), Data((const uint8_t *)Data.data()),
> Size(Data.size()),
> -        Live(!Config->GcSections) {}
> +        Live(Live || !Config->GcSections) {}
>
>    ArrayRef<uint8_t> data() { return {Data, Size}; }
>    size_t size() const { return Size; }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161005/5e6602e0/attachment-0001.html>


More information about the llvm-commits mailing list