[lld] r309688 - [ELF] - Use multithreading for building .gdb_index.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 1 10:13:16 PDT 2017
Nice, with 8 cores this is a 7.8% speed improvement of the clang with
gdb index link.
Cheers,
Rafael
George Rimar via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: grimar
> Date: Tue Aug 1 07:57:13 2017
> New Revision: 309688
>
> URL: http://llvm.org/viewvc/llvm-project?rev=309688&view=rev
> Log:
> [ELF] - Use multithreading for building .gdb_index.
>
> Enables multithreaded .gdb_index building.
>
> Differential revision: https://reviews.llvm.org/D36090
>
> Modified:
> lld/trunk/ELF/SyntheticSections.cpp
>
> Modified: lld/trunk/ELF/SyntheticSections.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=309688&r1=309687&r2=309688&view=diff
> ==============================================================================
> --- lld/trunk/ELF/SyntheticSections.cpp (original)
> +++ lld/trunk/ELF/SyntheticSections.cpp Tue Aug 1 07:57:13 2017
> @@ -1813,12 +1813,13 @@ static GdbIndexChunk readDwarf(DWARFCont
> }
>
> template <class ELFT> GdbIndexSection *elf::createGdbIndex() {
> - std::vector<GdbIndexChunk> Chunks;
> - for (InputSection *Sec : getDebugInfoSections()) {
> - ObjFile<ELFT> *F = Sec->getFile<ELFT>();
> + std::vector<InputSection *> Sections = getDebugInfoSections();
> + std::vector<GdbIndexChunk> Chunks(Sections.size());
> + parallelForEachN(0, Chunks.size(), [&](size_t I) {
> + ObjFile<ELFT> *F = Sections[I]->getFile<ELFT>();
> DWARFContext Dwarf(make_unique<LLDDwarfObj<ELFT>>(F));
> - Chunks.push_back(readDwarf(Dwarf, Sec));
> - }
> + Chunks[I] = readDwarf(Dwarf, Sections[I]);
> + });
> return make<GdbIndexSection>(std::move(Chunks));
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list