diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -406,9 +406,11 @@ # Build with optimization, unless we're in debug mode. if(COMPILER_RT_DEBUG) - list(APPEND SANITIZER_COMMON_CFLAGS -O1) + list(APPEND SANITIZER_COMMON_CFLAGS -O0) + list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -O0) else() list(APPEND SANITIZER_COMMON_CFLAGS -O3) + list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -O3) endif() endif() @@ -443,6 +445,7 @@ string(REGEX REPLACE "(^| )/Z[i7I]($| )" " /Z7 " "${var_to_update}" "${${var_to_update}}") endforeach() + list(APPEND COMPILER_RT_UNITTEST_CFLAGS -gcodeview) elseif(APPLE) # On Apple platforms use full debug info (i.e. not `-gline-tables-only`) # for all build types so that the runtime can be debugged. @@ -452,8 +455,13 @@ list(APPEND SANITIZER_COMMON_CFLAGS -g) elseif(COMPILER_RT_HAS_GLINE_TABLES_ONLY_FLAG AND NOT COMPILER_RT_DEBUG) list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only) + # -gline-tables-only must be enough for these tests, so use it if possible. + list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -gline-tables-only) + list(APPEND COMPILER_RT_UNITTEST_CFLAGS -gline-tables-only) elseif(COMPILER_RT_HAS_G_FLAG) list(APPEND SANITIZER_COMMON_CFLAGS -g) + list(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS -g) + list(APPEND COMPILER_RT_UNITTEST_CFLAGS -g) endif() if(LLVM_ENABLE_MODULES) diff --git a/compiler-rt/lib/asan/tests/CMakeLists.txt b/compiler-rt/lib/asan/tests/CMakeLists.txt --- a/compiler-rt/lib/asan/tests/CMakeLists.txt +++ b/compiler-rt/lib/asan/tests/CMakeLists.txt @@ -29,7 +29,6 @@ -I${COMPILER_RT_SOURCE_DIR}/lib/asan -I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/tests -fno-rtti - -O2 -Wno-format -Werror=sign-compare) append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros ASAN_UNITTEST_COMMON_CFLAGS) @@ -40,16 +39,6 @@ ${COMPILER_RT_UNITTEST_LINK_FLAGS} ${COMPILER_RT_UNWINDER_LINK_LIBS} ${SANITIZER_TEST_CXX_LIBRARIES}) - -# -gline-tables-only must be enough for ASan, so use it if possible. -if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang") - list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gline-tables-only) -else() - list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -g) -endif() -if(MSVC) - list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gcodeview) -endif() list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -g) # Use -D instead of definitions to please custom compile command. diff --git a/compiler-rt/lib/fuzzer/tests/CMakeLists.txt b/compiler-rt/lib/fuzzer/tests/CMakeLists.txt --- a/compiler-rt/lib/fuzzer/tests/CMakeLists.txt +++ b/compiler-rt/lib/fuzzer/tests/CMakeLists.txt @@ -4,8 +4,7 @@ ${COMPILER_RT_UNITTEST_CFLAGS} ${COMPILER_RT_GTEST_CFLAGS} -I${COMPILER_RT_SOURCE_DIR}/lib/fuzzer - -fno-rtti - -O2) + -fno-rtti) if (APPLE) set(FUZZER_SUPPORTED_OS osx) diff --git a/compiler-rt/lib/gwp_asan/tests/CMakeLists.txt b/compiler-rt/lib/gwp_asan/tests/CMakeLists.txt --- a/compiler-rt/lib/gwp_asan/tests/CMakeLists.txt +++ b/compiler-rt/lib/gwp_asan/tests/CMakeLists.txt @@ -6,7 +6,6 @@ ${SANITIZER_TEST_CXX_CFLAGS} -std=c++17 -I${COMPILER_RT_SOURCE_DIR}/lib/ - -O2 -g -fno-omit-frame-pointer) diff --git a/compiler-rt/lib/interception/tests/CMakeLists.txt b/compiler-rt/lib/interception/tests/CMakeLists.txt --- a/compiler-rt/lib/interception/tests/CMakeLists.txt +++ b/compiler-rt/lib/interception/tests/CMakeLists.txt @@ -18,7 +18,6 @@ -I${COMPILER_RT_SOURCE_DIR}/lib -I${COMPILER_RT_SOURCE_DIR}/lib/interception -fno-rtti - -O2 -Werror=sign-compare) set(INTERCEPTION_TEST_LINK_FLAGS_COMMON @@ -26,14 +25,7 @@ ${COMPILER_RT_UNWINDER_LINK_LIBS} ${SANITIZER_TEST_CXX_LIBRARIES}) -# -gline-tables-only must be enough for these tests, so use it if possible. -if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang") - list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -gline-tables-only) -else() - list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -g) -endif() if(MSVC) - list(APPEND INTERCEPTION_TEST_CFLAGS_COMMON -gcodeview) list(APPEND INTERCEPTION_TEST_LINK_FLAGS_COMMON -Wl,-largeaddressaware -Wl,-nodefaultlib:libcmt,-defaultlib:msvcrt,-defaultlib:oldnames diff --git a/compiler-rt/lib/msan/tests/CMakeLists.txt b/compiler-rt/lib/msan/tests/CMakeLists.txt --- a/compiler-rt/lib/msan/tests/CMakeLists.txt +++ b/compiler-rt/lib/msan/tests/CMakeLists.txt @@ -33,7 +33,6 @@ -I${COMPILER_RT_SOURCE_DIR}/lib -I${COMPILER_RT_SOURCE_DIR}/lib/msan -g - -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wno-deprecated-declarations diff --git a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt --- a/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt +++ b/compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt @@ -67,7 +67,6 @@ -I${COMPILER_RT_SOURCE_DIR}/lib -I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common -fno-rtti - -O2 -Werror=sign-compare -Wno-gnu-zero-variadic-macro-arguments ) @@ -76,16 +75,6 @@ ${COMPILER_RT_UNITTEST_LINK_FLAGS} ${COMPILER_RT_UNWINDER_LINK_LIBS} ${SANITIZER_TEST_CXX_LIBRARIES}) - -# -gline-tables-only must be enough for these tests, so use it if possible. -if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang") - list(APPEND SANITIZER_TEST_CFLAGS_COMMON -gline-tables-only) -else() - list(APPEND SANITIZER_TEST_CFLAGS_COMMON -g) -endif() -if(MSVC) - list(APPEND SANITIZER_TEST_CFLAGS_COMMON -gcodeview) -endif() list(APPEND SANITIZER_TEST_LINK_FLAGS_COMMON -g) if(NOT MSVC) diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_type_traits_test.cpp b/compiler-rt/lib/sanitizer_common/tests/sanitizer_type_traits_test.cpp --- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_type_traits_test.cpp +++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_type_traits_test.cpp @@ -69,15 +69,21 @@ }; TEST(SanitizerCommon, IsTriviallyDestructible) { + // Causes undefined references to __sanitizer::integral_constant::value. +#if !SANITIZER_DEBUG ASSERT_TRUE((is_trivially_destructible::value)); ASSERT_TRUE((is_trivially_destructible::value)); +#endif ASSERT_FALSE((is_trivially_destructible>::value)); } TEST(SanitizerCommon, IsTriviallyCopyable) { +#if !SANITIZER_DEBUG ASSERT_TRUE((is_trivially_copyable::value)); ASSERT_TRUE((is_trivially_copyable::value)); +#endif ASSERT_FALSE((is_trivially_copyable>::value)); } -} // namespace __sanitizer \ No newline at end of file +} // namespace __sanitizer