1
0
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:
Nick Lewycky 2011-12-05 23:07:05 +00:00
parent 4f8c6f6a9c
commit 389fa6c38d
2 changed files with 5 additions and 0 deletions

View File

@ -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();

View File

@ -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();
}
}