Author: Jacek Caban Date: 2026-07-14T12:04:26+02:00 New Revision: 79acf12724942b687b7c777e1dc46dd56ca4d287
URL: https://github.com/llvm/llvm-project/commit/79acf12724942b687b7c777e1dc46dd56ca4d287 DIFF: https://github.com/llvm/llvm-project/commit/79acf12724942b687b7c777e1dc46dd56ca4d287.diff LOG: [clang] Use lld-link by default when -marm64x is specified (#209324) ARM64X hybrid object files require lld-link, as it is currently the only linker that supports them. Added: Modified: clang/lib/Driver/ToolChains/MSVC.cpp clang/test/Driver/msvc-link.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 2b428c56ed1be..2aa69ec62cfba 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -344,9 +344,11 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA, // truncate the .debug_* sections to eight characters. PE/COFF doesn't allow // section names longer than eight bytes in executables - LLD uses the same // name length extension as in object files (where long names are allowed). + // Also 'lld-link' for hybrid object files if -marm64x is requested. if (Args.hasArg(options::OPT_gdwarf, options::OPT_gdwarf_2, options::OPT_gdwarf_3, options::OPT_gdwarf_4, - options::OPT_gdwarf_5, options::OPT_gdwarf_6)) + options::OPT_gdwarf_5, options::OPT_gdwarf_6, + options::OPT_marm64x)) Linker = "lld-link"; else Linker = "link"; diff --git a/clang/test/Driver/msvc-link.c b/clang/test/Driver/msvc-link.c index 755528a6c3e29..e78e457442c66 100644 --- a/clang/test/Driver/msvc-link.c +++ b/clang/test/Driver/msvc-link.c @@ -45,6 +45,13 @@ // RUN: %clang_cl -arm64EC -marm64x -fuse-ld=link -### -- %s 2>&1 | FileCheck --check-prefix=ARM64X %s // ARM64X: "-machine:arm64x" +// RUN: %clang --target=arm64ec-pc-windows-msvc -marm64x -### %s 2>&1 | FileCheck --check-prefix=ARM64X-LLD %s +// RUN: %clang --target=aarch64-pc-windows-msvc -marm64x -### %s 2>&1 | FileCheck --check-prefix=ARM64X-LLD %s +// RUN: %clang_cl -marm64x -### -- %s 2>&1 | FileCheck --check-prefix=ARM64X-LLD %s +// RUN: %clang_cl -arm64EC -marm64x -### -- %s 2>&1 | FileCheck --check-prefix=ARM64X-LLD %s +// ARM64X-LLD: lld-link +// ARM64X-LLD-SAME: "-machine:arm64x" + // RUN: not %clang --target=x86_64-linux-gnu -marm64x -### %s 2>&1 | FileCheck --check-prefix=HYBRID-ERR %s // HYBRID-ERR: error: unsupported option '-marm64x' for target 'x86_64-linux-gnu' _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
