diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2013-03-20 13:21:50 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2013-03-20 13:21:50 +0000 |
commit | b62c158d811be14ad6ae5f7ebe48e6035aa94da5 (patch) | |
tree | 1a788564872243c320a3bfe183bfbcd0fc8be12a /compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc | |
parent | b921e6377b86e3445975073bbb8154ec0dd6818d (diff) | |
download | bcm5719-llvm-b62c158d811be14ad6ae5f7ebe48e6035aa94da5.tar.gz bcm5719-llvm-b62c158d811be14ad6ae5f7ebe48e6035aa94da5.zip |
tsan: special handling of .rodata (don't try to find races, don't keep shadow, dont' put into traces)
llvm-svn: 177517
Diffstat (limited to 'compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc')
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc index 3be9b83c345..e93a7a34ee4 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc @@ -298,6 +298,13 @@ void MemoryAccessRange(ThreadState *thr, uptr pc, uptr addr, StatInc(thr, StatMopRange); + if (*shadow_mem == kShadowRodata) { + // Access to .rodata section, no races here. + // Measurements show that it can be 10-20% of all memory accesses. + StatInc(thr, StatMopRangeRodata); + return; + } + FastState fast_state = thr->fast_state; if (fast_state.GetIgnoreBit()) return; |