llvm-project/lld
Peter Collingbourne 5ea6d50af1 ELF: Place ordered sections in the middle of the unordered section list on targets with limited-range branches.
It generally does not matter much where we place sections ordered
by --symbol-ordering-file relative to other sections. But if the
ordered sections are hot (which is the case already for some users
of --symbol-ordering-file, and is increasingly more likely to be
the case once profile-guided section layout lands) and the target
has limited-range branches, it is beneficial to place the ordered
sections in the middle of the output section in order to decrease
the likelihood that a range extension thunk will be required to call
a hot function from a cold function or vice versa.

That is what this patch does. After D44966 it reduces the size of
Chromium for Android's .text section by 60KB.

Differential Revision: https://reviews.llvm.org/D44969

llvm-svn: 328905
2018-03-30 21:36:54 +00:00
..
COFF [lld-link] Add comment explaining that /FIXED behavior is correct despite contradicting MSDN. 2018-03-30 17:17:04 +00:00
Common Make sure that clang-format doesn't reorder include files. 2018-02-28 21:32:24 +00:00
ELF ELF: Place ordered sections in the middle of the unordered section list on targets with limited-range branches. 2018-03-30 21:36:54 +00:00
MinGW [MinGW] Add support for the GNU ld flag --kill-at 2018-03-14 20:17:24 +00:00
cmake/modules [CMake] Properly conditionalize installation of lld libraries 2018-03-09 13:09:36 +00:00
docs Update man page for long opts that accept = after r326506 2018-03-02 02:57:12 +00:00
include/lld Merge {COFF,ELF}/Strings.cpp to Common/Strings.cpp. 2018-02-28 17:38:19 +00:00
lib Fix build broken by llvm r327486 2018-03-14 09:57:52 +00:00
test ELF: Place ordered sections in the middle of the unordered section list on targets with limited-range branches. 2018-03-30 21:36:54 +00:00
tools/lld Remove "--full-shutdown" and instead use an environment variable LLD_IN_TEST. 2018-02-16 23:41:48 +00:00
unittests [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
utils Add a script to run various benchmarks and send the result to lnt. 2017-11-14 16:40:30 +00:00
wasm [WebAssembly] Error if both --export-table and --import-table are specified. 2018-03-30 16:06:14 +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
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.