aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-07-19 20:16:08 +0000
committerVedant Kumar <vsk@apple.com>2016-07-19 20:16:08 +0000
commit57faf2d2086a428ada439d620286656b76fb2be3 (patch)
tree779f5437ee2d87c1113b1aa393d8fe8a25d87ca9 /llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
parent24547108d66802490f30f2c15d1132dc6a4a5b16 (diff)
downloadllvm-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.cpp5
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;
}