From 0b92992df11fe3ee62c094dd88b8120ef790ccdd Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Thu, 2 Apr 2026 12:31:00 +1100 Subject: [PATCH] MDEV-39157 BUILD_TYPE=mysql_release to remove compile flags BUILD_TYPE=mysql_release changes a bunch of build flags on Linux/UNIX systems and our CI processes insufficiently test the impacts of these. This effectively drops the gcc/clang optimization from O3 of a release down to O2. The performance gains of O3 vs O2 are currently insufficiently tested (MDEV-19734 is outstanding). What is clear is amd64v3 is providing the ability of enhanced MMX instructions which causes segfaults on unaligned addresses (MDEV-38989 and others). As compilers get smarter and O3 provides more transforms is safer if the CMAKE_BUILD_TYPE=RelWithDebInfo experiences of CI have identical compile flags, with BUILD_TYPE=mysql_release changing to present required features only. This resolves MDEV-35809 by removing the specialized optimization for platforms that are unsupported or unmaintained per PR #3744 comments. --- .../build_configurations/mysql_release.cmake | 149 ------------------ 1 file changed, 149 deletions(-) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index e2adb59027c6a..38cda9ce6fc75 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -172,152 +172,3 @@ IF(UNIX) ENDIF() ENDIF() ENDIF() - -# Compiler options -IF(UNIX) - - # Default GCC flags - IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") - SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized") - STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${COMMON_C_FLAGS}") - # MariaDB uses -O3 for release builds - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - ENDIF() - IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${COMMON_CXX_FLAGS}") - # MariaDB uses -O3 for release builds - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - ENDIF() - - # IBM Z flags - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") - IF(RPM MATCHES "(rhel|centos)6" OR RPM MATCHES "(suse|sles)11") - SET(z_flags "-funroll-loops -march=z9-109 -mtune=z10") - ELSEIF(RPM MATCHES "(rhel|centos)7" OR RPM MATCHES "(suse|sles)12") - SET(z_flags "-funroll-loops -march=z196 -mtune=zEC12") - ELSE() - SET(z_flags "") - ENDIF() - - IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${z_flags}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${z_flags}") - ENDIF() - IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${z_flags}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${z_flags}") - ENDIF() - UNSET(z_flags) - ENDIF() - - # HPUX flags - IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") - IF(CMAKE_C_COMPILER_ID MATCHES "HP") - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(COMMON_C_FLAGS "+DSitanium2 -mt -AC99") - SET(COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa") - STRING(APPEND CMAKE_C_FLAGS_DEBUG " +O0 -g ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " +O0 -g ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " +O0 -g ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " +O0 -g ${COMMON_CXX_FLAGS}") - # We have seen compiler bugs with optimisation and -g, so disabled for now - STRING(APPEND CMAKE_C_FLAGS_RELEASE " +O2 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " +O2 ${COMMON_CXX_FLAGS}") - ENDIF() - ENDIF() - SET(WITH_SSL no) - ENDIF() - - # Linux flags - IF(CMAKE_SYSTEM_NAME MATCHES "Linux") - IF(CMAKE_C_COMPILER_ID MATCHES "Intel") - SET(COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict") - SET(COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict -fno-exceptions") - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch") - SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch") - ENDIF() - STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " -unroll2 -ip ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -unroll2 -ip ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -unroll2 -ip ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -unroll2 -ip ${COMMON_CXX_FLAGS}") - - # MariaDB uses -O3 for release builds. - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - SET(WITH_SSL no) - ENDIF() - ENDIF() - - # Default Clang flags - IF(CMAKE_C_COMPILER_ID MATCHES "Clang") - SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-parentheses-equality -Wno-string-plus-int") - STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${COMMON_C_FLAGS}") - # MariaDB uses -O3 for release builds. - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - ENDIF() - IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-parentheses-equality -Wno-string-plus-int") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${COMMON_CXX_FLAGS}") - # MariaDB uses -O3 for release builds. - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - ENDIF() - - # Solaris flags - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") - IF(CMAKE_SYSTEM_VERSION VERSION_GREATER "5.9") - # Link mysqld with mtmalloc on Solaris 10 and later - SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "") - ENDIF() - IF(CMAKE_C_COMPILER_ID MATCHES "SunPro") - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386") - SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic") - SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic") - STRING(APPEND CMAKE_C_FLAGS_DEBUG " -xO1 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " -xO1 ${COMMON_CXX_FLAGS}") - IF(32BIT) - STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO2 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO2 ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO2 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO2 ${COMMON_CXX_FLAGS}") - ELSEIF(64BIT) - STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO3 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO3 ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}") - ENDIF() - ELSE() - # Assume !x86 is SPARC - SET(COMMON_C_FLAGS "-g -Xa -xstrconst -mt") - SET(COMMON_CXX_FLAGS "-g0 -noex -mt") - IF(32BIT) - STRING(APPEND COMMON_C_FLAGS " -xarch=sparc") - STRING(APPEND COMMON_CXX_FLAGS " -xarch=sparc") - ENDIF() - STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO3 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO3 ${COMMON_CXX_FLAGS}") - STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_C_FLAGS}") - STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}") - ENDIF() - ENDIF() - ENDIF() -ENDIF()