[LLVMdev] LLD COFF status

Rui Ueyama ruiu at google.com
Wed Jun 24 12:59:49 PDT 2015


I've been working on the new LLD COFF linker for 1.5 months so far
(including history of my personal repository), and I feel like I should
post an update on that matter as a followup to the previous discussion
thread.

In short, it's doing very well.

Completeness
It was able to link itself from the first day when the first patch was
landed. Since then, I fixed bugs and added more features. It's now able to
link everything for check{,-lld,-clang}, and all tests pass.

Speed
It's generally 2x faster than MSVC linker. It's 10x faster than the old LLD
when linking itself. It may be the fastest COFF linker. It's
single-threaded. I have a plan to make it even faster by using multiple
threads.

Simplicity
It consists of only 5000 lines of code including comments and blank lines.
IMHO the code is simple and easy to read. (This is of course not a
third-party opinion, so you are welcomed to read the code. You can skip
Windows-specific code to get a whole picture.)

Advanced features
It supported dead-stripping from day one. I added preliminary ICF
(Identical COMDAT Folding) support yesterday. Implementing that was
basically just a one day task. Peter Collingbourne (pcc) added an
experimental LTO support to the linker. The code for LTO seems to naturally
fit to the other pieces of code.

Flexibility
When I first set the architecture, I was worried that I have made the
design too simple, so it could hit a wall at some point as I wrote more
code on top of that which prevented us from doing anything beyond that. I'm
not too worried about that now -- it looks like my design was a right
choice. It's way easier to implement new ideas than before. LTO and ICF are
probably good examples.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150624/1c79e254/attachment.html>


More information about the llvm-dev mailing list