mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
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. llvm-svn: 145869
This commit is contained in:
parent
4f8c6f6a9c
commit
389fa6c38d
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user