[PATCH] D45227: Instead of using std::copy, clear the vector first and add new elements. NFC.

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 9 11:41:23 PDT 2018


Out of curiosity - what was the motivation for this change? I'd expect that
copy would be faster than repeated push_back (though maybe LLVM can
optimize it to match)

On Tue, Apr 3, 2018 at 1:00 PM Rui Ueyama via Phabricator via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> ruiu created this revision.
> ruiu added a reviewer: pcc.
> Herald added subscribers: arichardson, emaste.
> Herald added a reviewer: espindola.
>
> Instead of using std::copy, clear the vector first and add new elements.
> NFC.
>
>
> https://reviews.llvm.org/D45227
>
> Files:
>   lld/ELF/Writer.cpp
>
>
> Index: lld/ELF/Writer.cpp
> ===================================================================
> --- lld/ELF/Writer.cpp
> +++ lld/ELF/Writer.cpp
> @@ -1137,24 +1137,23 @@
>    // of the second block of cold code can call the hot code without a
> thunk. So
>    // we effectively double the amount of code that could potentially call
> into
>    // the hot code without a thunk.
> -  size_t UnorderedInsPt = 0;
> +  size_t InsPt = 0;
>    if (Target->ThunkSectionSpacing && !OrderedSections.empty()) {
>      uint64_t UnorderedPos = 0;
> -    for (; UnorderedInsPt != UnorderedSections.size(); ++UnorderedInsPt) {
> -      UnorderedPos += UnorderedSections[UnorderedInsPt]->getSize();
> +    for (; InsPt != UnorderedSections.size(); ++InsPt) {
> +      UnorderedPos += UnorderedSections[InsPt]->getSize();
>        if (UnorderedPos > UnorderedSize / 2)
>          break;
>      }
>    }
>
> -  std::copy(UnorderedSections.begin(),
> -            UnorderedSections.begin() + UnorderedInsPt,
> ISD->Sections.begin());
> -  std::vector<InputSection *>::iterator SectionsPos =
> -      ISD->Sections.begin() + UnorderedInsPt;
> +  ISD->Sections.clear();
> +  for (InputSection *IS : makeArrayRef(UnorderedSections).slice(0, InsPt))
> +    ISD->Sections.push_back(IS);
>    for (std::pair<InputSection *, int> P : OrderedSections)
> -    *SectionsPos++ = P.first;
> -  std::copy(UnorderedSections.begin() + UnorderedInsPt,
> UnorderedSections.end(),
> -            SectionsPos);
> +    ISD->Sections.push_back(P.first);
> +  for (InputSection *IS : makeArrayRef(UnorderedSections).slice(InsPt))
> +    ISD->Sections.push_back(IS);
>  }
>
>  static void sortSection(OutputSection *Sec,
>
>
> _______________________________________________
> 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/20180409/1966c396/attachment.html>


More information about the llvm-commits mailing list