Skip to content

Commit 6d9ebf6

Browse files
authored
Merge pull request #1852 from thetic/insane-leak-detection
Change codegen for gcc 15.1+
2 parents 7bc71bc + 93e8724 commit 6d9ebf6

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,17 @@ if(NOT PROJECT_IS_TOP_LEVEL)
9191
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" PARENT_SCOPE)
9292
endif()
9393

94+
95+
if(
96+
(NOT CPPUTEST_MEM_LEAK_DETECTION_DISABLED)
97+
AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
98+
AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.1")
99+
)
100+
# Leak detection macros are not sane.
101+
message(NOTICE "Disabling -fassume-sane-operators-new-delete which breaks leak detection")
102+
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fno-assume-sane-operators-new-delete>)
103+
endif()
104+
94105
if(PROJECT_IS_TOP_LEVEL)
95106
include(cmake/warnings.cmake)
96107
endif()

configure.ac

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,15 @@ AC_MSG_CHECKING([whether CXX supports -Wno-old-style-cast])
303303
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-old-style-cast" ], [AC_MSG_RESULT([no])])
304304
CXXFLAGS="$saved_cxxflags"
305305

306+
if test "x${memory_leak_detection}" = xyes; then
307+
# GCC's default optimization breaks leak detection:
308+
# https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-fassume-sane-operators-new-delete
309+
CXXFLAGS="-Werror -fno-assume-sane-operators-new-delete"
310+
AC_MSG_CHECKING([whether CXX supports -fno-assume-sane-operators-new-delete])
311+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -fno-assume-sane-operators-new-delete" ], [AC_MSG_RESULT([no])])
312+
CXXFLAGS="$saved_cxxflags"
313+
fi
314+
306315
AC_LANG_POP
307316

308317
#####################################################

0 commit comments

Comments
 (0)