[all-commits] [llvm/llvm-project] 7142eb: sanitizers: compile with -O1 under debug

Dmitry Vyukov via All-commits all-commits at lists.llvm.org
Mon Aug 16 01:02:02 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7142eb17fb3419a76c9ac4afce0df986ff08d61c
      https://github.com/llvm/llvm-project/commit/7142eb17fb3419a76c9ac4afce0df986ff08d61c
  Author: Dmitry Vyukov <dvyukov at google.com>
  Date:   2021-08-16 (Mon, 16 Aug 2021)

  Changed paths:
    M compiler-rt/CMakeLists.txt
    M compiler-rt/test/tsan/Linux/check_memcpy.c

  Log Message:
  -----------
  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




More information about the All-commits mailing list