mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 16:56:35 +00:00
[tsan] Replace ALIGNED with alignas
Similar to #98958. The relands 656f617ac772c54e0bee9d499e7ca232137ddb35 , which was reverted due to an issue in tsan_platform_mac.cpp Pull Request: https://github.com/llvm/llvm-project/pull/98959
This commit is contained in:
parent
41553876d3
commit
7bb6bb9a1f
@ -30,7 +30,7 @@
|
||||
# define __MM_MALLOC_H
|
||||
# include <emmintrin.h>
|
||||
# include <smmintrin.h>
|
||||
# define VECTOR_ALIGNED ALIGNED(16)
|
||||
# define VECTOR_ALIGNED alignas(16)
|
||||
typedef __m128i m128;
|
||||
#else
|
||||
# define VECTOR_ALIGNED
|
||||
|
@ -208,7 +208,7 @@ struct AtExitCtx {
|
||||
struct InterceptorContext {
|
||||
// The object is 64-byte aligned, because we want hot data to be located
|
||||
// in a single cache line if possible (it's accessed in every interceptor).
|
||||
ALIGNED(64) LibIgnore libignore;
|
||||
alignas(64) LibIgnore libignore;
|
||||
__sanitizer_sigaction sigactions[kSigCount];
|
||||
#if !SANITIZER_APPLE && !SANITIZER_NETBSD
|
||||
unsigned finalize_key;
|
||||
@ -220,7 +220,7 @@ struct InterceptorContext {
|
||||
InterceptorContext() : libignore(LINKER_INITIALIZED), atexit_mu(MutexTypeAtExit), AtExitStack() {}
|
||||
};
|
||||
|
||||
static ALIGNED(64) char interceptor_placeholder[sizeof(InterceptorContext)];
|
||||
alignas(64) static char interceptor_placeholder[sizeof(InterceptorContext)];
|
||||
InterceptorContext *interceptor_ctx() {
|
||||
return reinterpret_cast<InterceptorContext*>(&interceptor_placeholder[0]);
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ struct DynamicAnnContext {
|
||||
};
|
||||
|
||||
static DynamicAnnContext *dyn_ann_ctx;
|
||||
static char dyn_ann_ctx_placeholder[sizeof(DynamicAnnContext)] ALIGNED(64);
|
||||
alignas(64) static char dyn_ann_ctx_placeholder[sizeof(DynamicAnnContext)];
|
||||
|
||||
static void AddExpectRace(ExpectRace *list,
|
||||
char *f, int l, uptr addr, uptr size, char *desc) {
|
||||
|
@ -54,7 +54,7 @@ struct MapUnmapCallback {
|
||||
}
|
||||
};
|
||||
|
||||
static char allocator_placeholder[sizeof(Allocator)] ALIGNED(64);
|
||||
alignas(64) static char allocator_placeholder[sizeof(Allocator)];
|
||||
Allocator *allocator() {
|
||||
return reinterpret_cast<Allocator*>(&allocator_placeholder);
|
||||
}
|
||||
@ -75,7 +75,7 @@ struct GlobalProc {
|
||||
internal_alloc_mtx(MutexTypeInternalAlloc) {}
|
||||
};
|
||||
|
||||
static char global_proc_placeholder[sizeof(GlobalProc)] ALIGNED(64);
|
||||
alignas(64) static char global_proc_placeholder[sizeof(GlobalProc)];
|
||||
GlobalProc *global_proc() {
|
||||
return reinterpret_cast<GlobalProc*>(&global_proc_placeholder);
|
||||
}
|
||||
|
@ -48,11 +48,10 @@ int (*on_finalize)(int);
|
||||
#endif
|
||||
|
||||
#if !SANITIZER_GO && !SANITIZER_APPLE
|
||||
__attribute__((tls_model("initial-exec")))
|
||||
THREADLOCAL char cur_thread_placeholder[sizeof(ThreadState)] ALIGNED(
|
||||
SANITIZER_CACHE_LINE_SIZE);
|
||||
alignas(SANITIZER_CACHE_LINE_SIZE) THREADLOCAL __attribute__((tls_model(
|
||||
"initial-exec"))) char cur_thread_placeholder[sizeof(ThreadState)];
|
||||
#endif
|
||||
static char ctx_placeholder[sizeof(Context)] ALIGNED(SANITIZER_CACHE_LINE_SIZE);
|
||||
alignas(SANITIZER_CACHE_LINE_SIZE) static char ctx_placeholder[sizeof(Context)];
|
||||
Context *ctx;
|
||||
|
||||
// Can be overriden by a front-end.
|
||||
|
@ -136,7 +136,7 @@ struct TidEpoch {
|
||||
Epoch epoch;
|
||||
};
|
||||
|
||||
struct TidSlot {
|
||||
struct alignas(SANITIZER_CACHE_LINE_SIZE) TidSlot {
|
||||
Mutex mtx;
|
||||
Sid sid;
|
||||
atomic_uint32_t raw_epoch;
|
||||
@ -153,10 +153,10 @@ struct TidSlot {
|
||||
}
|
||||
|
||||
TidSlot();
|
||||
} ALIGNED(SANITIZER_CACHE_LINE_SIZE);
|
||||
};
|
||||
|
||||
// This struct is stored in TLS.
|
||||
struct ThreadState {
|
||||
struct alignas(SANITIZER_CACHE_LINE_SIZE) ThreadState {
|
||||
FastState fast_state;
|
||||
int ignore_sync;
|
||||
#if !SANITIZER_GO
|
||||
@ -234,7 +234,7 @@ struct ThreadState {
|
||||
const ReportDesc *current_report;
|
||||
|
||||
explicit ThreadState(Tid tid);
|
||||
} ALIGNED(SANITIZER_CACHE_LINE_SIZE);
|
||||
};
|
||||
|
||||
#if !SANITIZER_GO
|
||||
#if SANITIZER_APPLE || SANITIZER_ANDROID
|
||||
|
@ -42,7 +42,7 @@ const char *__tsan_default_suppressions() {
|
||||
|
||||
namespace __tsan {
|
||||
|
||||
ALIGNED(64) static char suppression_placeholder[sizeof(SuppressionContext)];
|
||||
alignas(64) static char suppression_placeholder[sizeof(SuppressionContext)];
|
||||
static SuppressionContext *suppression_ctx = nullptr;
|
||||
static const char *kSuppressionTypes[] = {
|
||||
kSuppressionRace, kSuppressionRaceTop, kSuppressionMutex,
|
||||
|
@ -34,7 +34,7 @@ class VectorClock {
|
||||
VectorClock& operator=(const VectorClock& other);
|
||||
|
||||
private:
|
||||
Epoch clk_[kThreadSlotCount] VECTOR_ALIGNED;
|
||||
VECTOR_ALIGNED Epoch clk_[kThreadSlotCount];
|
||||
};
|
||||
|
||||
ALWAYS_INLINE Epoch VectorClock::Get(Sid sid) const {
|
||||
|
Loading…
x
Reference in New Issue
Block a user