diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -436,9 +436,12 @@ # 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) + string(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS " -O0") else() list(APPEND SANITIZER_COMMON_CFLAGS -O3) + # FIXME: Omit for now, causes testsuite failures. + #string(APPEND COMPILER_RT_TEST_COMPILER_CFLAGS " -O3") endif() endif() @@ -473,6 +476,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. @@ -482,8 +486,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. + string(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) + string(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/sanitizer_type_traits.h b/compiler-rt/lib/sanitizer_common/sanitizer_type_traits.h --- a/compiler-rt/lib/sanitizer_common/sanitizer_type_traits.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_type_traits.h @@ -98,6 +98,11 @@ constexpr value_type operator()() const { return value; } }; +#if !__cpp_inline_variables +template +constexpr T integral_constant::value; +#endif + #ifndef __has_builtin # define __has_builtin(x) 0 #endif 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 @@ -80,4 +80,4 @@ ASSERT_FALSE((is_trivially_copyable>::value)); } -} // namespace __sanitizer \ No newline at end of file +} // namespace __sanitizer diff --git a/compiler-rt/lib/tsan/tests/unit/tsan_trace_test.cpp b/compiler-rt/lib/tsan/tests/unit/tsan_trace_test.cpp --- a/compiler-rt/lib/tsan/tests/unit/tsan_trace_test.cpp +++ b/compiler-rt/lib/tsan/tests/unit/tsan_trace_test.cpp @@ -23,8 +23,15 @@ // There must be some difference in thread initialization // between normal execution and unit tests. # define TRACE_TEST(SUITE, NAME) TEST(SUITE, DISABLED_##NAME) +# define TRACE_TEST_OPTIMIZED(SUITE, NAME) TEST(SUITE, DISABLED_##NAME) #else # define TRACE_TEST(SUITE, NAME) TEST(SUITE, NAME) +// Some tests deadlock in debug builds. +# if !SANITIZER_DEBUG +# define TRACE_TEST_OPTIMIZED(SUITE, NAME) TEST(SUITE, NAME) +# else +# define TRACE_TEST_OPTIMIZED(SUITE, NAME) TEST(SUITE, DISABLED_##NAME) +# endif #endif namespace __tsan { @@ -67,7 +74,7 @@ operator ThreadState *() { return threads[0]; } }; -TRACE_TEST(Trace, RestoreAccess) { +TRACE_TEST_OPTIMIZED(Trace, RestoreAccess) { // A basic test with some function entry/exit events, // some mutex lock/unlock events and some other distracting // memory events. @@ -112,7 +119,7 @@ CHECK_EQ(tag, kExternalTagNone); } -TRACE_TEST(Trace, MemoryAccessSize) { +TRACE_TEST_OPTIMIZED(Trace, MemoryAccessSize) { // Test tracing and matching of accesses of different sizes. struct Params { uptr access_size, offset, size; @@ -167,7 +174,7 @@ } } -TRACE_TEST(Trace, RestoreMutexLock) { +TRACE_TEST_OPTIMIZED(Trace, RestoreMutexLock) { // Check of restoration of a mutex lock event. ThreadArray<1> thr; TraceFunc(thr, 0x1000); @@ -197,7 +204,7 @@ CHECK_EQ(mset.Get(1).write, false); } -TRACE_TEST(Trace, MultiPart) { +TRACE_TEST_OPTIMIZED(Trace, MultiPart) { // Check replay of a trace with multiple parts. ThreadArray<1> thr; FuncEntry(thr, 0x1000); diff --git a/compiler-rt/test/tsan/Linux/check_memcpy.c b/compiler-rt/test/tsan/Linux/check_memcpy.c --- a/compiler-rt/test/tsan/Linux/check_memcpy.c +++ b/compiler-rt/test/tsan/Linux/check_memcpy.c @@ -7,6 +7,8 @@ // tsan. // REQUIRES: shared_unwind +// XFAIL: !compiler-rt-optimized + // RUN: %clang_tsan -O1 %s -o %t // RUN: llvm-objdump -d -l %t | FileCheck %s