diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -420,7 +420,7 @@ } /// GetDefaultLinker - Get the default linker to use. - virtual const char *getDefaultLinker() const { return "ld"; } + virtual const char *getDefaultLinker() const; /// GetDefaultRuntimeLibType - Get the default runtime library variant to use. virtual RuntimeLibType GetDefaultRuntimeLibType() const { diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -541,6 +541,12 @@ return D.GetProgramPath(Name, *this); } +const char *ToolChain::getDefaultLinker() const { + if (StringRef(CLANG_DEFAULT_LINKER).empty()) + return "ld"; + return CLANG_DEFAULT_LINKER; +} + std::string ToolChain::GetLinkerPath(bool *LinkerIsLLD) const { if (LinkerIsLLD) *LinkerIsLLD = false; @@ -548,7 +554,7 @@ // Get -fuse-ld= first to prevent -Wunused-command-line-argument. -fuse-ld= is // considered as the linker flavor, e.g. "bfd", "gold", or "lld". const Arg* A = Args.getLastArg(options::OPT_fuse_ld_EQ); - StringRef UseLinker = A ? A->getValue() : CLANG_DEFAULT_LINKER; + StringRef UseLinker = A ? A->getValue() : ""; // --ld-path= takes precedence over -fuse-ld= and specifies the executable // name. -B, COMPILER_PATH and PATH and consulted if the value does not diff --git a/clang/test/Driver/ve-toolchain.c b/clang/test/Driver/ve-toolchain.c --- a/clang/test/Driver/ve-toolchain.c +++ b/clang/test/Driver/ve-toolchain.c @@ -61,10 +61,10 @@ /// Checking -fintegrated-as // RUN: %clang -### -target ve \ -// RUN: -x assembler -fuse-ld=ld %s 2>&1 | \ +// RUN: -x assembler %s 2>&1 | \ // RUN: FileCheck -check-prefix=AS %s // RUN: %clang -### -target ve \ -// RUN: -fno-integrated-as -fuse-ld=ld -x assembler %s 2>&1 | \ +// RUN: -fno-integrated-as -x assembler %s 2>&1 | \ // RUN: FileCheck -check-prefix=NAS %s // AS: clang{{.*}} "-cc1as" @@ -83,7 +83,6 @@ // RUN: %clang -### -target ve-unknown-linux-gnu \ // RUN: --sysroot %S/Inputs/basic_ve_tree \ // RUN: -resource-dir=%S/Inputs/basic_ve_tree/resource_dir \ -// RUN: -fuse-ld=ld \ // RUN: %s 2>&1 | FileCheck -check-prefix=DEF %s // DEF: clang{{.*}}" "-cc1" diff --git a/clang/test/Driver/ve-toolchain.cpp b/clang/test/Driver/ve-toolchain.cpp --- a/clang/test/Driver/ve-toolchain.cpp +++ b/clang/test/Driver/ve-toolchain.cpp @@ -92,10 +92,10 @@ /// Checking -fintegrated-as // RUN: %clangxx -### -target ve \ -// RUN: -x assembler -fuse-ld=ld %s 2>&1 | \ +// RUN: -x assembler %s 2>&1 | \ // RUN: FileCheck -check-prefix=AS %s // RUN: %clangxx -### -target ve \ -// RUN: -fno-integrated-as -x assembler -fuse-ld=ld %s 2>&1 | \ +// RUN: -fno-integrated-as -x assembler %s 2>&1 | \ // RUN: FileCheck -check-prefix=NAS %s // AS: clang{{.*}} "-cc1as" @@ -113,7 +113,6 @@ // RUN: %clangxx -### -target ve-unknown-linux-gnu \ // RUN: --sysroot %S/Inputs/basic_ve_tree \ -// RUN: -fuse-ld=ld \ // RUN: -resource-dir=%S/Inputs/basic_ve_tree/resource_dir \ // RUN: --stdlib=c++ %s 2>&1 | FileCheck -check-prefix=DEF %s