llvm-capstone/lld
Rui Ueyama 1b6bab011c Fix the worse case performance of ICF.
r288228 seems to have regressed ICF performance in some cases in which
a lot of sections are actually mergeable. In r288228, I made a change
to create a Range object for each new color group. So every time we
split a group, we allocated and added a new group to a list of groups.

This patch essentially reverted r288228 with an improvement to
parallelize the original algorithm.

Now the ICF main loop is entirely allocation-free and lock-free.

Just like pre-r288228, we search for group boundaries by linear scan
instead of managing the information using Range class. r288228 was
neutral in performance-wise, and so is this patch.

I confirmed that this produces the exact same result as before
using chromium and clang as tests.

llvm-svn: 288480
2016-12-02 05:35:46 +00:00
..
cmake/modules
COFF Dump Codeview type information correctly. 2016-12-01 01:22:48 +00:00
docs Partially revert r287009: Remove trailing whitespace. 2016-11-15 19:09:13 +00:00
ELF Fix the worse case performance of ICF. 2016-12-02 05:35:46 +00:00
include/lld Add paralell_for and use it where appropriate. 2016-11-27 19:28:32 +00:00
lib [ELF] Don't replace path separators on *NIX. 2016-11-16 19:35:36 +00:00
test Add a test documenting how we handle addends on Elf_Rela. 2016-12-02 04:20:47 +00:00
tools/lld Call _exit. 2016-10-26 18:59:00 +00:00
unittests [Cmake] Use Cmake's default RPATH for unittest. 2016-09-12 20:44:53 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
LICENSE.TXT
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.