The new Darwin backend for LLD is now able to link reasonably large
real-world programs on x86_64. For instance, we have achieved
self-hosting for the X86_64 target, where all LLD tests pass when
building lld with itself on macOS. As such, we would like to make it the
default back-end.
The new port is now named ld64.lld, and the old port remains
accessible as ld64.lld.darwinold
This [annoucement email][1] has some context. (But note that, unlike
what the email says, we are no longer doing this as part of the LLVM 12
branch cut -- instead we will go into LLVM 13.)
Numerous mechanical test changes were required to make this change; in
the interest of creating something that's reviewable on Phabricator,
I've split out the boring changes into a separate diff (D95905). I plan to
merge its contents with those in this diff before landing.
(@gkm made the original draft of this diff, and he has agreed to let me
take over.)
[1]: https://lists.llvm.org/pipermail/llvm-dev/2021-January/147665.html
very nit: You could keep darwinnew around for a bit too and make it mean the same thing as just ld64.lld. Then people could update to a new build, then do the (then) no-op change of replacing darwinnew with nothing. As is, updating toolchain and changing build files have to happen in the same change, which is always a bit annoying.
But since this was advertised as an unstable flag, it's not necessary, just kind of friendly. Up to you. (If you do this, consider reverting the change to the .gn file too.)