[llvm-commits] [compiler-rt] r167451 - in /compiler-rt/trunk/lib/tsan/rtl: tsan_clock.cc tsan_clock.h

Dmitry Vyukov dvyukov at google.com
Tue Nov 6 05:16:25 PST 2012


Author: dvyukov
Date: Tue Nov  6 07:16:25 2012
New Revision: 167451

URL: http://llvm.org/viewvc/llvm-project?rev=167451&view=rev
Log:
tsan: don't release disabled clocks


Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_clock.cc
    compiler-rt/trunk/lib/tsan/rtl/tsan_clock.h

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_clock.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_clock.cc?rev=167451&r1=167450&r2=167451&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_clock.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_clock.cc Tue Nov  6 07:16:25 2012
@@ -58,6 +58,7 @@
 
 ThreadClock::ThreadClock() {
   nclk_ = 0;
+  disabled_ = false;
   for (uptr i = 0; i < (uptr)kMaxTidInClock; i++)
     clk_[i] = 0;
 }
@@ -80,6 +81,8 @@
   DCHECK(nclk_ <= kMaxTid);
   DCHECK(dst->clk_.Size() <= kMaxTid);
 
+  if (disabled_)
+    return;
   if (dst->clk_.Size() < nclk_)
     dst->clk_.Resize(nclk_);
   for (uptr i = 0; i < nclk_; i++) {
@@ -92,6 +95,8 @@
   DCHECK(nclk_ <= kMaxTid);
   DCHECK(dst->clk_.Size() <= kMaxTid);
 
+  if (disabled_)
+    return;
   if (dst->clk_.Size() < nclk_)
     dst->clk_.Resize(nclk_);
   for (uptr i = 0; i < nclk_; i++)
@@ -106,6 +111,7 @@
 }
 
 void ThreadClock::Disable(unsigned tid) {
+  disabled_ = true;
   u64 c0 = clk_[tid];
   for (uptr i = 0; i < kMaxTidInClock; i++)
     clk_[i] = (u64)-1;

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_clock.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_clock.h?rev=167451&r1=167450&r2=167451&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_clock.h (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_clock.h Tue Nov  6 07:16:25 2012
@@ -48,7 +48,7 @@
 
   void set(unsigned tid, u64 v) {
     DCHECK_LT(tid, kMaxTid);
-    DCHECK_GE(v, clk_[tid]);
+    DCHECK(v >= clk_[tid] || disabled_);
     clk_[tid] = v;
     if (nclk_ <= tid)
       nclk_ = tid + 1;
@@ -74,6 +74,7 @@
 
  private:
   uptr nclk_;
+  bool disabled_;
   u64 clk_[kMaxTidInClock];
 };
 





More information about the llvm-commits mailing list