Go to file
Rui Ueyama 5b93aa51de COFF: Teach ICF to merge cyclic graphs.
Previously, LLD's ICF couldn't merge cyclic graphs. That was unfortunate
because, in COFF, cyclic graphs are not exceptional at all. That is
pretty common.

In this patch, sections are grouped by Tarjan's strongly connected
component algorithm to get acyclic graphs. And then we try to merge
SCCs whose outdegree is zero, and remove them from the graph. This
makes other SCCs to have outdegree zero, so we can repeat the
process until all SCCs are removed. When comparing two SCCs, we handle
cycles properly.

This algorithm works better than previous one. Previously, self-linking
produced a 29.0MB executable. It now produces a 27.7MB. There's still some
gap compared to MSVC linker which produces a 27.1MB executable for the
same input. So the gap is narrowed, but still LLD is not on par with MSVC.
I'll investigate that later.

llvm-svn: 247387
2015-09-11 04:29:03 +00:00
clang [modules] Don't load files specified by -fmodule-file= when modules are 2015-09-11 03:58:07 +00:00
clang-tools-extra [clang-tidy] Add misc-sizeof-container check to find sizeof() uses on stl 2015-09-10 16:37:46 +00:00
compiler-rt Unbreak building on FreeBSD. 2015-09-10 21:56:16 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Update mailing list reference. 2015-08-24 22:43:24 +00:00
libcxx Implementation of Boyer-Moore and Boyer-Moore-Horspool searchers for the LFTS. 2015-09-08 17:59:09 +00:00
libcxxabi Convert LIBCXXABI_BUILD_32_BITS to LLVM_BUILD_32_BITS. 2015-09-01 01:02:06 +00:00
libunwind unwind: cleanup -Wunused-parameter 2015-09-01 04:29:03 +00:00
lld COFF: Teach ICF to merge cyclic graphs. 2015-09-11 04:29:03 +00:00
lldb Link liblldb.so with LLVMObjCARCOpts.a 2015-09-11 03:52:08 +00:00
llgo [llgo] drop debug/DIBuilder.Declare 2015-09-01 11:52:37 +00:00
llvm [dsymutil] Discard useless location attributes. 2015-09-11 04:17:30 +00:00
openmp [OMPT] Fix assertion that arises when waiting for proxy tasks on runtime shutdown 2015-09-10 21:33:50 +00:00
polly Update polly for explicit type parameter to global alias change 2015-09-11 03:42:32 +00:00