[tsan] Replace mem intrinsics with calls to interceptors
authorVitaly Buka <vitalybuka@google.com>
Sun, 4 Sep 2022 05:24:33 +0000 (22:24 -0700)
committerVitaly Buka <vitalybuka@google.com>
Tue, 6 Sep 2022 20:09:31 +0000 (13:09 -0700)
commitb4257d3bf58c51ff437c99c7b160023f5fffac78
tree83b08d0194ffc40c940fa78397104cb2f2565a14
parent4a0b18c2cd02f8e3daa47a1cf6dc6d8e4dcbfa31
[tsan] Replace mem intrinsics with calls to interceptors

After https://reviews.llvm.org/rG463aa814182a23 tsan replaces llvm
intrinsics with calls to glibc functions. However this approach is
fragile, as slight changes in pipeline can return llvm intrinsics back.
In particular InstCombine can do that.

Msan/Asan already declare own version of these memory
functions for the similar purpose.

KCSAN, or anything that uses something else than compiler-rt, needs to
implement this callbacks.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D133268
compiler-rt/lib/tsan/rtl/tsan.syms.extra
compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
compiler-rt/lib/tsan/rtl/tsan_interface.h
compiler-rt/test/tsan/Linux/double_race.cpp
compiler-rt/test/tsan/inlined_memcpy_race.cpp
compiler-rt/test/tsan/inlined_memcpy_race2.cpp
compiler-rt/test/tsan/memcmp_race.cpp
compiler-rt/test/tsan/memcpy_race.cpp
llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
llvm/test/Instrumentation/ThreadSanitizer/tsan_basic.ll