[llvm] 51994f9 - [CMake] Unify LLVM_LINKER_IS_GOLD -Wl, --gc-sections setting with GNU ld and LLD

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 23 19:47:00 PST 2020


Author: Fangrui Song
Date: 2020-11-23T19:46:52-08:00
New Revision: 51994f90b618d947427f3c95fe8168d1c848927c

URL: https://github.com/llvm/llvm-project/commit/51994f90b618d947427f3c95fe8168d1c848927c
DIFF: https://github.com/llvm/llvm-project/commit/51994f90b618d947427f3c95fe8168d1c848927c.diff

LOG: [CMake] Unify LLVM_LINKER_IS_GOLD -Wl,--gc-sections setting with GNU ld and LLD

Added: 
    

Modified: 
    llvm/cmake/modules/AddLLVM.cmake

Removed: 
    


################################################################################
diff  --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index e3a20a054975..a3e9eaeeb262 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -228,14 +228,6 @@ function(add_link_opts target_name)
                    LINK_FLAGS " -Wl,-O3")
     endif()
 
-    if(LLVM_LINKER_IS_GOLD)
-      # With gold gc-sections is always safe.
-      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
-                   LINK_FLAGS " -Wl,--gc-sections")
-      # Note that there is a bug with -Wl,--icf=safe so it is not safe
-      # to enable. See https://sourceware.org/bugzilla/show_bug.cgi?id=17704.
-    endif()
-
     if(NOT LLVM_NO_DEAD_STRIP)
       if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
         # ld64's implementation of -dead_strip breaks tools that use plugins.
@@ -250,12 +242,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 LLVM_LINKER_IS_GOLD AND
-             NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD|AIX|OS390")
-        # Object files are compiled with -ffunction-data-sections.
-        # Versions of bfd ld < 2.23.1 have a bug in --gc-sections that breaks
-        # tools that use plugins. Always pass --gc-sections once we require
-        # a newer linker.
+      elseif(NOT WIN32 AND NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD|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