[compiler-rt] r228102 - [sanitizer] add another workaround for PR 17409: when over a threshold emit coverage instrumentation as calls.

Kostya Serebryany kcc at google.com
Tue Feb 3 17:21:46 PST 2015


Author: kcc
Date: Tue Feb  3 19:21:45 2015
New Revision: 228102

URL: http://llvm.org/viewvc/llvm-project?rev=228102&view=rev
Log:
[sanitizer] add another workaround for PR 17409: when over a threshold emit coverage instrumentation as calls. 

Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc?rev=228102&r1=228101&r2=228102&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Tue Feb  3 19:21:45 2015
@@ -659,6 +659,11 @@ SANITIZER_INTERFACE_ATTRIBUTE void __san
   coverage_data.Add(StackTrace::GetPreviousInstructionPc(GET_CALLER_PC()),
                     guard);
 }
+SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_with_check(u32 *guard) {
+  atomic_uint32_t *atomic_guard = reinterpret_cast<atomic_uint32_t*>(guard);
+  if (__sanitizer::atomic_load(atomic_guard, memory_order_relaxed))
+    __sanitizer_cov(guard);
+}
 SANITIZER_INTERFACE_ATTRIBUTE void
 __sanitizer_cov_indir_call16(uptr callee, uptr callee_cache16[]) {
   coverage_data.IndirCall(StackTrace::GetPreviousInstructionPc(GET_CALLER_PC()),





More information about the llvm-commits mailing list