[llvm] [CMake] Don't pass --gc-sections to MSVC-style linkers when using clang's MSVC mode (PR #196393)

Artur Wojcik via llvm-commits llvm-commits at lists.llvm.org
Mon May 11 00:45:53 PDT 2026


https://github.com/apwojcik updated https://github.com/llvm/llvm-project/pull/196393

>From 5c3050e4e6e8a78bd7efc5c73bbd1011edcaa97f Mon Sep 17 00:00:00 2001
From: Artur Wojcik <Artur.Wojcik at amd.com>
Date: Thu, 7 May 2026 20:50:18 +0200
Subject: [PATCH 1/2] llvm-ld.exe do not know --gc-sections option

---
 llvm/cmake/modules/AddLLVM.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index 28858db434f91..cbef77e4fd8d0 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -382,7 +382,7 @@ function(add_link_opts target_name)
           set_property(TARGET ${target_name} APPEND_STRING PROPERTY
                        LINK_FLAGS " -Wl,-z,discard-unused=sections")
         endif()
-      elseif(NOT MSVC AND NOT CMAKE_SYSTEM_NAME MATCHES "AIX|OS390")
+    elseif(NOT WIN32 AND NOT CMAKE_SYSTEM_NAME MATCHES "AIX|OS390")
         # TODO Revisit this later on z/OS.
         set_property(TARGET ${target_name} APPEND_STRING PROPERTY
                      LINK_FLAGS " -Wl,--gc-sections")

>From 64f3b28c7b11cc737177a0e1a757d3b4fdcfc0ff Mon Sep 17 00:00:00 2001
From: Artur Wojcik <Artur.Wojcik at amd.com>
Date: Fri, 8 May 2026 09:50:21 +0200
Subject: [PATCH 2/2] change to CMAKE_CXX_SIMULATE_ID

---
 llvm/cmake/modules/AddLLVM.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index cbef77e4fd8d0..e8a1b8b948b5a 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -382,7 +382,7 @@ function(add_link_opts target_name)
           set_property(TARGET ${target_name} APPEND_STRING PROPERTY
                        LINK_FLAGS " -Wl,-z,discard-unused=sections")
         endif()
-    elseif(NOT WIN32 AND NOT CMAKE_SYSTEM_NAME MATCHES "AIX|OS390")
+      elseif(NOT MSVC AND NOT CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC" AND NOT CMAKE_SYSTEM_NAME MATCHES "AIX|OS390")
         # TODO Revisit this later on z/OS.
         set_property(TARGET ${target_name} APPEND_STRING PROPERTY
                      LINK_FLAGS " -Wl,--gc-sections")



More information about the llvm-commits mailing list