https://github.com/petrhosek created https://github.com/llvm/llvm-project/pull/199166
Reverts llvm/llvm-project#198600 because the test doesn't correctly handle the case when Clang is configured `CLANG_DEFAULT_LINKER=lld`. >From e0458e1948691ce3b05f349187f8217cb14b0520 Mon Sep 17 00:00:00 2001 From: Petr Hosek <[email protected]> Date: Thu, 21 May 2026 22:23:01 -0700 Subject: [PATCH] Revert "[Driver][MSVC] Use LLD if DWARF is requested (#198600)" This reverts commit cdc2749dffafaa1d43815d58303cc08516732f60. --- clang/lib/Driver/ToolChains/MSVC.cpp | 22 ++++------------------ clang/test/Driver/msvc-link.c | 18 ------------------ 2 files changed, 4 insertions(+), 36 deletions(-) diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 23585ba45a0dd..984a4ded57e92 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -332,26 +332,12 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA, AddRunTimeLibs(TC, TC.getDriver(), CmdArgs, Args); } - StringRef PreferredLinker = TC.getDriver().getPreferredLinker(); - if (PreferredLinker.empty()) { - // If DWARF is requested, use LLD, because MSVC's link.exe will silently - // 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). - 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)) - PreferredLinker = "lld-link"; - else - PreferredLinker = "link"; - } - - StringRef Linker = - Args.getLastArgValue(options::OPT_fuse_ld_EQ, PreferredLinker); + StringRef Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ, + TC.getDriver().getPreferredLinker()); if (Linker.empty()) - Linker = PreferredLinker; + Linker = "link"; // We need to translate 'lld' into 'lld-link'. - if (Linker.equals_insensitive("lld")) + else if (Linker.equals_insensitive("lld")) Linker = "lld-link"; if (Linker == "lld-link") { diff --git a/clang/test/Driver/msvc-link.c b/clang/test/Driver/msvc-link.c index e3c3f980f8b51..82659cbb9b495 100644 --- a/clang/test/Driver/msvc-link.c +++ b/clang/test/Driver/msvc-link.c @@ -51,21 +51,3 @@ // RUN: %clang -c -marm64x --target=arm64ec-pc-windows-msvc -fuse-ld=link -### %s 2>&1 | \ // RUN: FileCheck --check-prefix=HYBRID-WARN %s // HYBRID-WARN: warning: argument unused during compilation: '-marm64x' [-Wunused-command-line-argument] - -// RUN: %clang --target=i686-pc-windows-msvc -g -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LINK %s -// RUN: %clang --target=i686-pc-windows-msvc -g -fuse-ld=link -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LINK %s -// DEBUG-LINK: link.exe" -// DEBUG-LINK-SAME: "-debug" -// DEBUG-LINK-NOT: lld - -// RUN: %clang --target=i686-pc-windows-msvc -g -fuse-ld=lld -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -g -fuse-ld=lld-link -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf-2 -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf-3 -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf-4 -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf-5 -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// RUN: %clang --target=i686-pc-windows-msvc -gdwarf-6 -fuse-ld= -### %s 2>&1 | FileCheck --check-prefix=DEBUG-LLD %s -// DEBUG-LLD: lld-link" -// DEBUG-LLD-SAME: "-debug" -// DEBUG-LLD-NOT: link.exe _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
