forked from OSchip/llvm-project
sanitizers: compile with -O1 under debug
Tsan's check_memcpy.c test was disabled under debug because it failed. But it points to real issues and does not help to just disable it. I tried to enable it and see what fail and the first hit was default ctor for: struct ChainedOriginDepotDesc { u32 here_id; u32 prev_id; }; initializing these fields to 0's help partially, but compiler still emits memset before calling ctor. I did not try to see what's the next failure, because if it fails on such small structs, it won't be realistic to fix everything and keep working. Compile runtimes with -O1 under debug instead. It seems to fix all current failures. At least I run check-tsan under clang/gcc x debug/non-debug and all combinations passed. -O1 does not usually use too aggressive optimizations and sometimes even makes debugging easier because machine code is not exceedingly verbose. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D107962
This commit is contained in:
parent
09507b5325
commit
7142eb17fb
|
@ -378,7 +378,7 @@ if (NOT MSVC)
|
|||
|
||||
# Build with optimization, unless we're in debug mode.
|
||||
if(COMPILER_RT_DEBUG)
|
||||
list(APPEND SANITIZER_COMMON_CFLAGS -O0)
|
||||
list(APPEND SANITIZER_COMMON_CFLAGS -O1)
|
||||
else()
|
||||
list(APPEND SANITIZER_COMMON_CFLAGS -O3)
|
||||
endif()
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
// its objdump.
|
||||
|
||||
// RUN: %clang_tsan -O1 %s -o %t
|
||||
// RUN: llvm-objdump -d %t | FileCheck %s
|
||||
|
||||
// REQUIRES: compiler-rt-optimized
|
||||
// RUN: llvm-objdump -d -l %t | FileCheck %s
|
||||
|
||||
int main() {
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue