llvm-project/lld
George Rimar 343e8227b7 [ELF] - Stop using SectionKey for creating output sections.
Stop using SectionKey for creating output sections.

Initially SectionKey was designed because we merged section with
use of Flags and Alignment fields. Currently LLD merges them by name only,
except the case when -relocatable output is produced. In that case
we still merge sections only with the same flags and alignment.
There is probably no issue at all to stop using Flags and Alignment for -r and
just disable the merging in that case.

After doing that change we can get rid of using SectionKey. That is not only
simplifies the code, but also gives some perfomance boost.

I tried to link chrome and mozilla, results are next:
* chrome link time goes from 1,666750355s to 1,551585364s, that is about 7%.
* mozilla time changes from 3,210261947 to 3,153782940, or about 2%.

Differential revision: https://reviews.llvm.org/D39594

llvm-svn: 317406
2017-11-04 09:11:27 +00:00
..
COFF [COFF] Avoid "Body" as a local variable name. 2017-11-03 22:49:02 +00:00
Common Instead of enclosing an entire file, add lld:: specifier for public functions. 2017-10-27 18:04:49 +00:00
ELF [ELF] - Stop using SectionKey for creating output sections. 2017-11-04 09:11:27 +00:00
MinGW [MinGW] Output debug info by default, unless the -s parameter is passed 2017-11-03 22:10:37 +00:00
cmake/modules [lld][cmake] Fix BUILD_SHARED_LIBS installation 2017-01-24 10:41:02 +00:00
docs Merge SymbolBody and Symbol into one class, SymbolBody. 2017-10-31 16:07:41 +00:00
include/lld [lld] unified COFF and ELF error handling on new Common/ErrorHandler 2017-10-25 22:28:38 +00:00
lib lld: Prune unused libdeps. 2017-10-12 00:04:24 +00:00
test [ELF] - Fix error reporting with --strip-debug/--strip-all. 2017-11-04 08:20:30 +00:00
tools/lld lld::COFF: better behavior when using as a library 2017-10-23 20:03:32 +00:00
unittests Move new lld's code to Common subdirectory. 2017-10-02 21:00:41 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format
.gitignore
CMakeLists.txt Move new lld's code to Common subdirectory. 2017-10-02 21:00:41 +00:00
CODE_OWNERS.TXT
LICENSE.TXT Update copyright year to 2016. 2016-03-30 22:40:59 +00:00
README.md Add a note on where to get a lld benchmark. 2017-10-03 23:44:24 +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 4818e8d38961503a04a73597b0da1242c39efc9df2ceb6dfca4ed36845239863.