[llvm-dev] [cfe-dev] LLD to be the default linker in Clang

Ed Maste via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 28 10:12:50 PDT 2016


On 28 October 2016 at 16:54, Renato Golin via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> On 28 October 2016 at 17:41, Hans Wennborg <hans at chromium.org> wrote:
>> There's also -fuse-ld=
>>
>> That's how I usually do it.
>
> Right, that gets rid of the override flag. Thanks! :)
>
> But the arguments about the default and the cross-compilation error still stand.

It should be possible to search the path for ld.lld first, then ld,
but to me it seems like it will just be more confusing.  Also AFAIK
the -fuse-ld flag has no way to specify plain ld, although we could
allow -fuse-ld= to specify that.

Clang's current approach (ld from $PATH by default, or ld.arg from
-fuse-ld=arg) suits us in FreeBSD. Today we have:
    /usr/bin/ld.bfd (GNU ld 2.17.50)
    /usr/bin/ld (ld.bfd symlink)

We'll soon add
    /usr/bin/ld.lld
and in fact we'll want the default to remain /usr/bin/ld until we're
confident lld is a suitable replacement for all cases. At that point
we'll change the ld symlink to ld.lld.

Installing the binutils port adds:

/usr/local/bin/ld.bfd
/usr/local/bin/ld.gold
/usr/local/bin/ld (/usr/local/bin/ld.bfd hardlink)

The only downside of -fuse-ld= that I'm aware of affects GCC only, not
Clang: GCC accepts only -fuse-ld=bfd and -fuse-ld=gold, and Davide's
patch to add -fuse-ld=lld was met with hostility. But that shouldn't
have any effect on Clang.


More information about the llvm-dev mailing list