diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2011-12-05 23:07:05 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2011-12-05 23:07:05 +0000 |
commit | aa21e417f24fe9be4fd8db366766fb262c96703e (patch) | |
tree | ee3b73e1026a1a64de7d32b502ea8106c472f0b1 | |
parent | a4b6fd5be08ad6a1cb2d07aba2814aaa2a626c8d (diff) |
Silence tsan false-positives (tsan can't track things which are only safe due to
memory fences) in statistics registration, which works the same way that
ManagedStatic registration does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145869 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/Statistic.h | 2 | ||||
-rw-r--r-- | lib/Support/Statistic.cpp | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/ADT/Statistic.h b/include/llvm/ADT/Statistic.h index b8a1a2f5c4..b54d10b9dd 100644 --- a/include/llvm/ADT/Statistic.h +++ b/include/llvm/ADT/Statistic.h @@ -27,6 +27,7 @@ #define LLVM_ADT_STATISTIC_H #include "llvm/Support/Atomic.h" +#include "llvm/Support/Valgrind.h" namespace llvm { class raw_ostream; @@ -110,6 +111,7 @@ protected: bool tmp = Initialized; sys::MemoryFence(); if (!tmp) RegisterStatistic(); + TsanHappensAfter(this); return *this; } void RegisterStatistic(); diff --git a/lib/Support/Statistic.cpp b/lib/Support/Statistic.cpp index 04a44a0f71..d8a6ad35ba 100644 --- a/lib/Support/Statistic.cpp +++ b/lib/Support/Statistic.cpp @@ -73,9 +73,12 @@ void Statistic::RegisterStatistic() { if (Enabled) StatInfo->addStatistic(this); + TsanHappensBefore(this); sys::MemoryFence(); // Remember we have been registered. + TsanIgnoreWritesBegin(); Initialized = true; + TsanIgnoreWritesEnd(); } } |