Files
scylladb/cmake/mode.RelWithDebInfo.cmake
Avi Kivity b67928a457 build: suppress linker pgo hash mismatch warnings
Since we generage pgo profiles once a fortnight (and not every build),
pgo hash mismatches are expected as the code built diverges from the
code measured. The warnings about hash mismatches don't provide any
value (they cannot be acted upon) and are only distracting.

A possible downside is that we'll miss the pgo training process failing
(it is visible in the warnings list getting longer and longer), but that's
not a proper indication.

Suppress them with the appropriate linker switch.

Ref #26010.

Closes scylladb/scylladb#26162
2025-09-24 13:07:07 +02:00

36 lines
1.5 KiB
CMake

# it's important to *set* CMAKE_CXX_FLAGS_RELWITHDEBINFO here. otherwise,
# CMAKE_CXX_FLAGS_RELWITHDEBINFO would be initialized with
# CMAKE_CXX_FLAGS_RELWITHDEBUGINF_INIT, which is "-O2 -g -DNDEBUG",
# in CMake 3.27, but we need to enable "assert()" even with the release
# builds. so let's set this flagset instead of appending to it.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-ffunction-sections -fdata-sections"
CACHE
INTERNAL
"")
update_build_flags(RelWithDebInfo
WITH_DEBUG_INFO
OPTIMIZATION_LEVEL "3")
set(scylla_build_mode_RelWithDebInfo "release")
add_compile_definitions(
$<$<CONFIG:RelWithDebInfo>:SCYLLA_BUILD_MODE=${scylla_build_mode_RelWithDebInfo}>)
set(Scylla_CLANG_INLINE_THRESHOLD "2500" CACHE STRING
"LLVM-specific inline threshold compilation parameter")
add_compile_options(
"$<$<AND:$<CONFIG:RelWithDebInfo>,$<CXX_COMPILER_ID:GNU>>:--param;inline-unit-growth=300>"
"$<$<AND:$<CONFIG:RelWithDebInfo>,$<CXX_COMPILER_ID:Clang>>:-mllvm;-inline-threshold=${Scylla_CLANG_INLINE_THRESHOLD}>")
# clang generates 16-byte loads that break store-to-load forwarding
# gcc also has some trouble: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103554
check_cxx_compiler_flag("-fno-slp-vectorize" _slp_vectorize_supported)
if(_slp_vectorize_supported)
add_compile_options(
$<$<CONFIG:RelWithDebInfo>:-fno-slp-vectorize>)
endif()
add_link_options($<$<CONFIG:RelWithDebInfo>:LINKER:--gc-sections>)
add_link_options($<$<CONFIG:RelWithDebInfo>:LINKER:--no-lto-pgo-warn-mismatch>)
maybe_limit_stack_usage_in_KB(13 RelWithDebInfo)