llvm-project/lld
Reid Kleckner 0a1b1d6e62 Shrink SectionChunk by combining Relocs and SectionName sizes
SectionChunk is one of the most frequently allocated data structures in
LLD, since there are about four per function when optimizations and
debug info are enabled (.text, .pdata, .xdata, .debug$S).

A PE COFF file cannot be larger than 2GB, so there is an inherent limit
on the length of the section name and the number of relocations.
Decompose the ArrayRef and StringRef into pointer and size, and put them
back together in the accessors for section name and relocation list.

I plan to gather complete performance numbers later by padding
SectionChunk with dead data and measuring performance after all the size
optimizations are done.

llvm-svn: 359923
2019-05-03 20:17:14 +00:00
..
COFF Shrink SectionChunk by combining Relocs and SectionName sizes 2019-05-03 20:17:14 +00:00
Common Fail early if an output file is not writable 2019-03-11 16:30:55 +00:00
ELF [ELF] Place SHT_NOTE sections with the same alignment into one PT_NOTE 2019-05-03 00:35:49 +00:00
MinGW [MinGW] Add an --appcontainer flag, passed through to lld-link 2019-04-19 13:50:43 +00:00
cmake/modules [CMake] Properly conditionalize installation of lld libraries 2018-03-09 13:09:36 +00:00
docs lld-link: Add /force:multipleres extension to make dupe resource diag non-fatal 2019-05-02 21:21:55 +00:00
include/lld Fail early if an output file is not writable 2019-03-11 16:30:55 +00:00
lib Use llvm::stable_sort 2019-04-23 02:42:06 +00:00
test [ELF] Place SHT_NOTE sections with the same alignment into one PT_NOTE 2019-05-03 00:35:49 +00:00
tools/lld Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
unittests Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
utils Python 2/3 compatibility 2019-03-20 07:42:13 +00:00
wasm [WebAssembly] Always take into account added when applying runtime relocations 2019-04-25 17:11:54 +00:00
.arcconfig [lld] Set up .arcconfig to point to new Diffusion LLD repository 2017-12-06 20:56:23 +00:00
.clang-format
.gitignore
CMakeLists.txt [WebAssembly] Initial wasm linker implementation 2017-11-17 18:14:09 +00:00
CODE_OWNERS.TXT [WebAssembly] Initial wasm linker implementation 2017-11-17 18:14:09 +00:00
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
README.md Note that the test .tar.xz has been updated. 2017-12-22 19:37:32 +00:00

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.