forked from OSchip/llvm-project
[ELF] Use parallelSort for .rela.dyn
An unstable sort suffices. In a large link (11.06s), this decreases .rela.dyn writeTo time from 1.52s to 0.81s, resulting in 6% total time speedup (the benefit will greatly dilute if --pack-dyn-relocs=relr becomes prevailing). Encoding the dynamic relocations then sorting raw Elf_Rel/Elf_Rela doesn't seem to improve much (doing that would require code duplicate because of Elf_Rel/Elf_Rela plus unfortunate mips64le), so don't do that.
This commit is contained in:
parent
1eaa9b4374
commit
9115d75117
|
@ -1678,7 +1678,7 @@ template <class ELFT> void RelocationSection<ELFT>::writeTo(uint8_t *buf) {
|
|||
// place R_*_RELATIVE first. SymIndex is to improve locality, while r_offset
|
||||
// is to make results easier to read.
|
||||
if (sort)
|
||||
llvm::stable_sort(
|
||||
parallelSort(
|
||||
relocs, [&](const DynamicReloc &a, const DynamicReloc &b) {
|
||||
return std::make_tuple(a.type != target->relativeRel,
|
||||
a.getSymIndex(symTab), a.getOffset()) <
|
||||
|
|
Loading…
Reference in New Issue