<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 27, 2015 at 1:13 AM, Yury Gribov <span dir="ltr"><<a href="mailto:tetra2005@gmail.com" target="_blank">tetra2005@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Updated based on review.<br>
<span class=""><br>
<br>
REPOSITORY<br>
  rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D7171" target="_blank">http://reviews.llvm.org/D7171</a><br>
<br>
Files:<br>
  lib/sanitizer_common/sanitizer_linux.cc<br>
  lib/sanitizer_common/sanitizer_mac.cc<br>
  lib/sanitizer_common/sanitizer_mutex.h<br>
<br>
Index: lib/sanitizer_common/sanitizer_linux.cc<br>
===================================================================<br>
--- lib/sanitizer_common/sanitizer_linux.cc<br>
+++ lib/sanitizer_common/sanitizer_linux.cc<br>
</span>@@ -493,15 +493,12 @@<br>
<span class="">   MtxSleeping = 2<br>
 };<br>
<br>
-BlockingMutex::BlockingMutex(LinkerInitialized) {<br>
-  CHECK_EQ(owner_, 0);<br>
-}<br>
-<br>
</span> BlockingMutex::BlockingMutex() {<br>
   internal_memset(this, 0, sizeof(*this));<br>
<span class=""> }<br>
<br>
 void BlockingMutex::Lock() {<br>
+  CHECK_EQ(owner_, 0);<br>
   atomic_uint32_t *m = reinterpret_cast<atomic_uint32_t *>(&opaque_storage_);<br>
   if (atomic_exchange(m, MtxLocked, memory_order_acquire) == MtxUnlocked)<br>
     return;<br>
Index: lib/sanitizer_common/sanitizer_mac.cc<br>
===================================================================<br>
--- lib/sanitizer_common/sanitizer_mac.cc<br>
+++ lib/sanitizer_common/sanitizer_mac.cc<br>
</span>@@ -217,10 +217,6 @@<br>
<span class="">   return sysconf(_SC_PAGESIZE);<br>
 }<br>
<br>
-BlockingMutex::BlockingMutex(LinkerInitialized) {<br>
-  // We assume that OS_SPINLOCK_INIT is zero<br>
-}<br>
-<br>
</span> BlockingMutex::BlockingMutex() {<br>
   internal_memset(this, 0, sizeof(*this));<br>
<span class=""> }<br>
Index: lib/sanitizer_common/sanitizer_mutex.h<br>
===================================================================<br>
--- lib/sanitizer_common/sanitizer_mutex.h<br>
+++ lib/sanitizer_common/sanitizer_mutex.h<br>
</span>@@ -73,7 +73,13 @@<br>
<span class=""><br>
 class BlockingMutex {<br>
  public:<br>
+#if SANITIZER_WINDOWS<br>
</span>+  // Windows does not currently support LinkerInitialized<br>
<span class="">   explicit BlockingMutex(LinkerInitialized);<br>
+#else<br>
+  explicit constexpr BlockingMutex(LinkerInitialized)<br>
</span>+      : opaque_storage_ {0, }, </blockquote><div><br>This is something I haven't seen before (though seems obvious enough) - any idea if it's supported on the full compiler support matrix (except windows?)?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">owner_(0) {}</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="">+#endif<br>
   BlockingMutex();<br>
   void Lock();<br>
   void Unlock();<br>
<br>
</span>EMAIL PREFERENCES<br>
  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br>
</blockquote></div><br></div></div>