Browse Source

IPO: Do not use -flto=auto with GCC 10.x on Windows

Revise the change from commit fe57410b33 (IPO: Use -flto=auto if
compiler is GCC >= 10.1, 2022-06-22, v3.24.0-rc2~2^2) to require
at least GCC 11 on Windows.

Fixes: #23836
Issue: #23640
Brad King 3 years ago
parent
commit
7b2a87c2eb
1 changed files with 8 additions and 1 deletions
  1. 8 1
      Modules/Compiler/GNU.cmake

+ 8 - 1
Modules/Compiler/GNU.cmake

@@ -79,8 +79,15 @@ macro(__compiler_gnu lang)
     # * 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)
+    # FIXME: What version of GCC for Windows added support for -flto=auto?  10.3 does not have it.
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
       list(APPEND __lto_flags -flto=auto)
+    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 10.1)
+      if (CMAKE_HOST_WIN32)
+        list(APPEND __lto_flags -flto=1)
+      else()
+        list(APPEND __lto_flags -flto=auto)
+      endif()
     else()
       list(APPEND __lto_flags -flto)
     endif()