speed up under ThreadSanitizer (#4842)
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
#ifndef TNT_UTILS_CONDITION_H
|
||||
#define TNT_UTILS_CONDITION_H
|
||||
|
||||
#if defined(__linux__) && !defined(__SANITIZE_THREAD__)
|
||||
#if defined(__linux__)
|
||||
#include <utils/linux/Condition.h>
|
||||
#else
|
||||
#include <utils/generic/Condition.h>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#ifndef TNT_UTILS_MUTEX_H
|
||||
#define TNT_UTILS_MUTEX_H
|
||||
|
||||
#if defined(__linux__) && !defined(__SANITIZE_THREAD__)
|
||||
#if defined(__linux__)
|
||||
#include <utils/linux/Mutex.h>
|
||||
#else
|
||||
#include <utils/generic/Mutex.h>
|
||||
|
||||
@@ -75,8 +75,8 @@ private:
|
||||
};
|
||||
} // namespace details
|
||||
|
||||
#if defined(__SANITIZE_THREAD__)
|
||||
// Unfortunately TSAN doesn't support homegrown synchronization primitives
|
||||
#if UTILS_HAS_SANITIZE_THREAD
|
||||
// Active spins with atomics slow down execution too much under ThreadSanitizer.
|
||||
using SpinLock = Mutex;
|
||||
#elif defined(__ARM_ARCH_7A__)
|
||||
// We've had problems with "wfe" on some ARM-V7 devices, causing spurious SIGILL
|
||||
|
||||
@@ -65,19 +65,21 @@
|
||||
#endif
|
||||
|
||||
#define UTILS_NO_SANITIZE_THREAD
|
||||
#if defined(__has_feature)
|
||||
# if __has_feature(thread_sanitizer)
|
||||
# undef UTILS_NO_SANITIZE_THREAD
|
||||
# define UTILS_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread")))
|
||||
# endif
|
||||
#if __has_feature(thread_sanitizer)
|
||||
#undef UTILS_NO_SANITIZE_THREAD
|
||||
#define UTILS_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread")))
|
||||
#endif
|
||||
|
||||
#define UTILS_HAS_SANITIZE_THREAD 0
|
||||
#if __has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__)
|
||||
#undef UTILS_HAS_SANITIZE_THREAD
|
||||
#define UTILS_HAS_SANITIZE_THREAD 1
|
||||
#endif
|
||||
|
||||
#define UTILS_HAS_SANITIZE_MEMORY 0
|
||||
#if defined(__has_feature)
|
||||
# if __has_feature(memory_sanitizer)
|
||||
# undef UTILS_HAS_SANITIZE_MEMORY
|
||||
# define UTILS_HAS_SANITIZE_MEMORY 1
|
||||
# endif
|
||||
#if __has_feature(memory_sanitizer)
|
||||
#undef UTILS_HAS_SANITIZE_MEMORY
|
||||
#define UTILS_HAS_SANITIZE_MEMORY 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user