[compiler-rt] r253665 - [tsan] Replace POSIX semaphores with pthread condition variables in vptr_benign_race.cc

Kuba Brecka via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 20 06:17:43 PST 2015


Author: kuba.brecka
Date: Fri Nov 20 08:17:43 2015
New Revision: 253665

URL: http://llvm.org/viewvc/llvm-project?rev=253665&view=rev
Log:
[tsan] Replace POSIX semaphores with pthread condition variables in vptr_benign_race.cc

OS X doesn't support POSIX semaphores (but it does have the API for it, which returns ENOSYS - "Function not implemented").

Differential Revision: http://reviews.llvm.org/D14865


Modified:
    compiler-rt/trunk/test/tsan/vptr_benign_race.cc

Modified: compiler-rt/trunk/test/tsan/vptr_benign_race.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/vptr_benign_race.cc?rev=253665&r1=253664&r2=253665&view=diff
==============================================================================
--- compiler-rt/trunk/test/tsan/vptr_benign_race.cc (original)
+++ compiler-rt/trunk/test/tsan/vptr_benign_race.cc Fri Nov 20 08:17:43 2015
@@ -1,28 +1,36 @@
 // RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
 #include <pthread.h>
-#include <semaphore.h>
 #include <stdio.h>
 
 struct A {
   A() {
-    sem_init(&sem_, 0, 0);
+    pthread_mutex_init(&m, 0);
+    pthread_cond_init(&c, 0);
+    signaled = false;
   }
   virtual void F() {
   }
   void Done() {
-    sem_post(&sem_);
+    pthread_mutex_lock(&m);
+    signaled = true;
+    pthread_cond_signal(&c);
+    pthread_mutex_unlock(&m);
   }
   virtual ~A() {
   }
-  sem_t sem_;
+  pthread_mutex_t m;
+  pthread_cond_t c;
+  bool signaled;
 };
 
 struct B : A {
   virtual void F() {
   }
   virtual ~B() {
-    sem_wait(&sem_);
-    sem_destroy(&sem_);
+    pthread_mutex_lock(&m);
+    while (!signaled)
+      pthread_cond_wait(&c, &m);
+    pthread_mutex_unlock(&m);
   }
 };
 




More information about the llvm-commits mailing list