[llvm-dev] LLD status update and performance chart

Renato Golin via llvm-dev llvm-dev at lists.llvm.org
Fri Dec 16 10:45:46 PST 2016


On 16 December 2016 at 18:15, Rui Ueyama via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> So, correct me if I'm wrong, but I don't see no serious conflicts here. The
> conflict I saw in the thread is I believe superficial, and I strongly
> believe that it could have been addressed calmly and nicely if we have used
> more words to explain thoughts instead of small number of strong words.

Hi Rui,

Thank you for your comments. I agree with your views that the issue
was much more about communication than technical. It's how things are
said, rather that what is said, and we should put that aside.

On the technical side, I agree that the project needs a solid base
before fancy new features get incorporated, but I also believe that
parallel development, even on trunk, can happen as it does in LLVM
(see GlobalISel, pass managers, register allocators, back-ends).

I'm very happy that LLD works well on AArch64, bootstrapping Clang and
passing the test-suite. We aim to reach the same objective next year
on ARM, and go beyond. I'm also happy that the FreeBSD community is
looking at it with serious eyes and trying to make it the default
linker on x86_64.

In the interest of collaboration, I think we should set some goals for
the project in general, getting feedback from the community that works
in it and the stakeholders, at least until we reach production quality
in one architecture. From my point of view, having LLD as the default
linker for FreeBSD/ELF/x86_64 is a strong indication that it "works
well in a large range of situations". I'd happily call that stage
"Production Beta". But that's not all. We need other architectures
(AArch64 and ARM will probably come next), as well as different object
formats (COFF, MachO) to be able to call it "Production Stable".

However, my humble opinion is that we don't need to be in "Production
Stable" to start adding new features, especially when that means a
larger portion of the LLVM ecosystem will begin to contribute more to
the project. Those new features can stay disabled by default and be
isolated from the main code, like we do in LLVM. Yes, that will mean
more work for all of us. Yes, that will mean longer test cycles, more
test configurations. But that will also mean more people working on
it, validating in ways you didn't even know it was possible. That
value is worth the extra trouble, IMVHO, and LLVM's success is living
proof of that.

LLD may be a separate project, and a young one full of energy, but it
is also an "LLVM Project". As such, it's bound to the same level of
design goals that all LLVM projects share. Not all share all values,
but two that we share amongst all projects is collaboration and
modularisation. Those values reflect our multiple ranges of users and
developers as well as the need to re-use code above raw performance.

As was said in this list, Clang is not faster than GCC for a long
time, even though it was one of the shiny distinctions. The faster the
code we produce, the slower the compiler runs. It's an obvious
relationship, and one that will (hopefully) happen with the linker if
it has any expectation of being used by the whole community, not just
the limited number of developers today.

cheers,
--renato


More information about the llvm-dev mailing list