diff options
author | Vedant Kumar <vsk@apple.com> | 2016-07-19 20:16:08 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-07-19 20:16:08 +0000 |
commit | 57faf2d2086a428ada439d620286656b76fb2be3 (patch) | |
tree | 779f5437ee2d87c1113b1aa393d8fe8a25d87ca9 /llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp | |
parent | 24547108d66802490f30f2c15d1132dc6a4a5b16 (diff) | |
download | llvm-57faf2d2086a428ada439d620286656b76fb2be3.zip llvm-57faf2d2086a428ada439d620286656b76fb2be3.tar.gz llvm-57faf2d2086a428ada439d620286656b76fb2be3.tar.bz2 |
[tsan] Don't instrument __llvm_gcov_global_state_pred or __llvm_gcda*
r274801 did not go far enough to allow gcov+tsan to cooperate. With this
commit it's possible to run the following code without false positives:
std::thread T1(fib), T2(fib);
T1.join(); T2.join();
llvm-svn: 276015
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp index dcb62d3..41041c7 100644 --- a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp @@ -272,8 +272,9 @@ static bool shouldInstrumentReadWriteFromAddress(Value *Addr) { return false; } - // Check if the global is in a GCOV counter array. - if (GV->getName().startswith("__llvm_gcov_ctr")) + // Check if the global is private gcov data. + if (GV->getName().startswith("__llvm_gcov") || + GV->getName().startswith("__llvm_gcda")) return false; } |