[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