Driver: use ld64.lld when -fuse-ld=lld for darwin
authorMartell Malone <martellmalone@gmail.com>
Sun, 15 Oct 2017 17:53:45 +0000 (17:53 +0000)
committerMartell Malone <martellmalone@gmail.com>
Sun, 15 Oct 2017 17:53:45 +0000 (17:53 +0000)
When using lld on macOS the current level of detection between ld and
ld64 forces us to rename lld to ld.

For ELF targets we have the ld.lld alias so for MACHO we should have
ld64.lld so we can use lld without replacing the system compiler.

This also solves the additional issue of cross compiling for MACHO
where renaming lld to ld with only target ELF.

This is the clang driver component change to use this new alias.

Reviewers: ruiu, rnk

Differential Revision: https://reviews.llvm.org/D38290

llvm-svn: 315867

clang/lib/Driver/ToolChain.cpp

index de23bf6f3ebb88fa27b6a47f4d2b6cfc6290096d..593cd82038f251e6fdaf794307ce82672f11f510 100644 (file)
@@ -390,7 +390,11 @@ std::string ToolChain::GetLinkerPath() const {
     // then use whatever the default system linker is.
     return GetProgramPath(getDefaultLinker());
   } else {
-    llvm::SmallString<8> LinkerName("ld.");
+    llvm::SmallString<8> LinkerName;
+    if (Triple.isOSDarwin())
+      LinkerName.append("ld64.");
+    else
+      LinkerName.append("ld.");
     LinkerName.append(UseLinker);
 
     std::string LinkerPath(GetProgramPath(LinkerName.c_str()));