summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2013-03-18 15:49:07 +0000
committerDmitry Vyukov <dvyukov@google.com>2013-03-18 15:49:07 +0000
commit2e7f29f042eb203215eb0ccb12ebc5b811fa4c7a (patch)
tree93d5009b1aa6794ed1a677777fbba455646df182 /compiler-rt/lib/tsan/rtl/tsan_rtl.cc
parent2f69d405ccd7d0d9ea653dd4c65e65d13753898c (diff)
downloadbcm5719-llvm-2e7f29f042eb203215eb0ccb12ebc5b811fa4c7a.tar.gz
bcm5719-llvm-2e7f29f042eb203215eb0ccb12ebc5b811fa4c7a.zip
tsan: mark shadow for thread stack as "don't need" when thread exits
llvm-svn: 177288
Diffstat (limited to 'compiler-rt/lib/tsan/rtl/tsan_rtl.cc')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_rtl.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
index 2e9a36b9c36..9ed3a4c8514 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
@@ -125,6 +125,12 @@ static void InitializeMemoryProfile() {
internal_start_thread(&MemoryProfileThread, (void*)(uptr)fd);
}
+void DontNeedShadowFor(uptr addr, uptr size) {
+ uptr shadow_beg = MemToShadow(addr);
+ uptr shadow_end = MemToShadow(addr + size);
+ FlushUnneededShadowMemory(shadow_beg, shadow_end - shadow_beg);
+}
+
static void MemoryFlushThread(void *arg) {
ScopedInRtl in_rtl;
for (int i = 0; ; i++) {
OpenPOWER on IntegriCloud