Browse Source

Merge topic 'ipo_append_auto_on_gcc' into release-3.24

fe57410b33 IPO: Use -flto=auto if compiler is GCC >= 10.1

Acked-by: Kitware Robot <[email protected]>
Merge-request: !7400
Brad King 3 years ago
parent
commit
0c2066f2d9
1 changed files with 12 additions and 1 deletions
  1. 12 1
      Modules/Compiler/GNU.cmake

+ 12 - 1
Modules/Compiler/GNU.cmake

@@ -72,7 +72,18 @@ macro(__compiler_gnu lang)
   # * https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Option-Summary.html (yes)
   if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.5)
     set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-    set(__lto_flags -flto)
+
+    set(__lto_flags "")
+
+    # '-flto=auto' introduced since GCC 10.1:
+    # * https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/Optimize-Options.html#Optimize-Options (no)
+    # * https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#Optimize-Options (yes)
+    # Since GCC 12.1, the abundance of a parameter produces a warning if compiling multiple targets.
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 10.1)
+      list(APPEND __lto_flags -flto=auto)
+    else()
+      list(APPEND __lto_flags -flto)
+    endif()
 
     if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.7)
       # '-ffat-lto-objects' introduced since GCC 4.7: