[clang] Revert "[Driver][MSVC] Use LLD if DWARF is requested" (PR #199166)
Petr Hosek via cfe-commits
cfe-commits at lists.llvm.org
Thu May 21 22:24:03 PDT 2026
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 <phosek at google.com>
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
More information about the cfe-commits
mailing list