mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-20 13:04:00 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145869 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a4b6fd5be0
commit
aa21e417f2
@ -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