aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Noda <sys9kdr@users.noreply.github.com>2025-01-06 04:28:31 +0900
committerGitHub <noreply@github.com>2025-01-05 11:28:31 -0800
commitac5a6d9ff56b451f5f24dfd3c46a6447375d3394 (patch)
treef81740b1f3573c7e86e940f99e2a0edca76f6b42
parent548f19ccc3018aa563d25cf99a9ce70a56b115fe (diff)
downloadrneovim-ac5a6d9ff56b451f5f24dfd3c46a6447375d3394.tar.gz
rneovim-ac5a6d9ff56b451f5f24dfd3c46a6447375d3394.tar.bz2
rneovim-ac5a6d9ff56b451f5f24dfd3c46a6447375d3394.zip
build: fix RelWithDebInfo optimization flags #31802
Problem: RelWithDebInfo generates redundant flags: Compilation: /usr/bin/cc -O2 -g -Og -g The `CMAKE_C_FLAGS_RELWITHDEBINFO` variable is being modified in a way that caused duplicate `-Og` and `-g` flags to be added. The resulting flags were `-O2 -g -Og -g`. - `-Og` (Optimize for debugging) and `-O2` (Optimize for performance) are different optimization levels. We can't use both at once. - The duplicate `-g` flag is redundant and no effect. multiple -O flags has no effect for code, just redundant. > If you use multiple -O options, with or without level numbers, the last such option is the one that is effective. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Solution: Adjust the flags to use the more appropriate `-O2 -g`. Compilation: /usr/bin/cc -O2 -g BEFORE: ``` :verbose version NVIM v0.11.0-dev-1443+ge00cd1ab40 Build type: RelWithDebInfo LuaJIT 2.1.1734355927 Compilation: /usr/bin/cc -O2 -g -Og -g -flto -fno-fat-lto-ob jects -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict ... ``` AFTER: ``` :verbose version NVIM v0.11.0-dev-e00cd1ab4-dirty Build type: RelWithDebInfo LuaJIT 2.1.1734355927 Compilation: /usr/bin/cc -O2 -g -flto -fno-fat-lto-objects - Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-protot ... ```
-rw-r--r--CMakeLists.txt5
-rw-r--r--CMakePresets.json2
-rw-r--r--contrib/local.mk.example2
3 files changed, 2 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a19c04c26f..b9ceb05aba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,11 +149,6 @@ set(NVIM_API_LEVEL 13) # Bump this after any API/stdlib change.
set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change.
set(NVIM_API_PRERELEASE true)
-# Build-type: RelWithDebInfo
-# /Og means something different in MSVC
-if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -Og -g")
-endif()
# We _want_ assertions in RelWithDebInfo build-type.
if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG)
string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
diff --git a/CMakePresets.json b/CMakePresets.json
index 1d214d7801..b863d88608 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -10,7 +10,7 @@
{
"name": "default",
"displayName": "RelWithDebInfo",
- "description": "Enables optimizations (-Og or -O2) with debug information",
+ "description": "Enables optimizations (-O2) with debug information",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
},
diff --git a/contrib/local.mk.example b/contrib/local.mk.example
index 718bf9f2a3..f3024a147c 100644
--- a/contrib/local.mk.example
+++ b/contrib/local.mk.example
@@ -14,7 +14,7 @@
#
# - Debug: Disables optimizations (-O0), enables debug information.
#
-# - RelWithDebInfo: Enables optimizations (-Og or -O2) with debug information.
+# - RelWithDebInfo: Enables optimizations (-O2) with debug information.
#
# - MinSizeRel: Enables all -O2 optimization that do not typically
# increase code size, and performs further optimizations