https://github.com/quic-k updated https://github.com/llvm/llvm-project/pull/228982
>From d465619135f194ceef697b91c3f08ac9bdabaa59 Mon Sep 17 00:00:00 2001 From: Kushal Pal <[email protected]> Date: Mon, 5 Oct 2026 11:38:52 +0530 Subject: [PATCH] [Hexagon][Driver] Recognize versioned ld.lld as LLD Signed-off-by: Kushal Pal <[email protected]> --- clang/lib/Driver/ToolChains/Hexagon.cpp | 4 ++- .../Tools/bin/hexagon-unknown-elf-ld.lld | 1 + .../Inputs/hexagon_tree/Tools/bin/ld.lld-23 | 0 clang/test/Driver/hexagon-toolchain-elf.c | 26 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 120000 clang/test/Driver/Inputs/hexagon_tree/Tools/bin/hexagon-unknown-elf-ld.lld create mode 100755 clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld-23 diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index ec2641301909d..9c823a847d6e3 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -302,7 +302,9 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA, bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); bool UseLLD = false; const char *Exec = Args.MakeArgString(HTC.GetLinkerPath(&UseLLD)); - UseLLD = UseLLD || llvm::sys::path::filename(Exec).ends_with("ld.lld") || + StringRef LinkerName = llvm::sys::path::filename(Exec); + UseLLD = UseLLD || LinkerName.starts_with("ld.lld") || + LinkerName.ends_with("ld.lld") || llvm::sys::path::stem(Exec).ends_with("ld.lld"); bool UseShared = IsShared && !IsStatic; StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args); diff --git a/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/hexagon-unknown-elf-ld.lld b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/hexagon-unknown-elf-ld.lld new file mode 120000 index 0000000000000..9b032ee3b3f1d --- /dev/null +++ b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/hexagon-unknown-elf-ld.lld @@ -0,0 +1 @@ +ld.lld \ No newline at end of file diff --git a/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld-23 b/clang/test/Driver/Inputs/hexagon_tree/Tools/bin/ld.lld-23 new file mode 100755 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c index 2832a8393feb7..ea0ac48a0c028 100644 --- a/clang/test/Driver/hexagon-toolchain-elf.c +++ b/clang/test/Driver/hexagon-toolchain-elf.c @@ -704,3 +704,29 @@ // RUN: %t.o 2>&1 | FileCheck -check-prefix=CHECK-LTO %s // CHECK-LTO: "-plugin-opt=thinlto" // CHECK-LTO: "-plugin-opt=-enable-matrix" + +// ----------------------------------------------------------------------------- +// Versioned ld.lld is recognized as LLD +// ----------------------------------------------------------------------------- +// RUN: %clang -### --target=hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --ld-path=%S/Inputs/hexagon_tree/Tools/bin/ld.lld-23 \ +// RUN: -nostdlib %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-VERSIONED-LLD %s +// CHECK-VERSIONED-LLD: "{{.*}}ld.lld-23" +// CHECK-VERSIONED-LLD-NOT: "-march=hexagon" +// CHECK-VERSIONED-LLD-NOT: "-mcpu=hexagonv60" + +// ----------------------------------------------------------------------------- +// Triple-prefixed ld.lld is recognized as LLD +// ----------------------------------------------------------------------------- +// RUN: %clang -### --target=hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 -fuse-ld=gold \ +// RUN: --ld-path=%S/Inputs/hexagon_tree/Tools/bin/hexagon-unknown-elf-ld.lld \ +// RUN: -nostdlib %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-TRIPLE-LLD %s +// CHECK-TRIPLE-LLD: "{{.*}}hexagon-unknown-elf-ld.lld" +// CHECK-TRIPLE-LLD-NOT: "-march=hexagon" +// CHECK-TRIPLE-LLD-NOT: "-mcpu=hexagonv60" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
