[compiler-rt] r281462 - [tsan] Fix hanging gcd-apply and gcd-apply-race tests on macOS Sierra

Kuba Brecka via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 14 06:53:06 PDT 2016


Author: kuba.brecka
Date: Wed Sep 14 08:53:06 2016
New Revision: 281462

URL: http://llvm.org/viewvc/llvm-project?rev=281462&view=rev
Log:
[tsan] Fix hanging gcd-apply and gcd-apply-race tests on macOS Sierra


Modified:
    compiler-rt/trunk/test/tsan/Darwin/gcd-apply-race.mm
    compiler-rt/trunk/test/tsan/Darwin/gcd-apply.mm

Modified: compiler-rt/trunk/test/tsan/Darwin/gcd-apply-race.mm
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/Darwin/gcd-apply-race.mm?rev=281462&r1=281461&r2=281462&view=diff
==============================================================================
--- compiler-rt/trunk/test/tsan/Darwin/gcd-apply-race.mm (original)
+++ compiler-rt/trunk/test/tsan/Darwin/gcd-apply-race.mm Wed Sep 14 08:53:06 2016
@@ -10,6 +10,10 @@ long global;
 int main(int argc, const char *argv[]) {
   barrier_init(&barrier, 2);
   fprintf(stderr, "start\n");
+
+  // Warm up GCD (workaround for macOS Sierra where dispatch_apply might run single-threaded).
+  dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });
+
   dispatch_queue_t q = dispatch_queue_create("my.queue", DISPATCH_QUEUE_CONCURRENT);
   dispatch_apply(2, q, ^(size_t i) {
     global = i;

Modified: compiler-rt/trunk/test/tsan/Darwin/gcd-apply.mm
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/Darwin/gcd-apply.mm?rev=281462&r1=281461&r2=281462&view=diff
==============================================================================
--- compiler-rt/trunk/test/tsan/Darwin/gcd-apply.mm (original)
+++ compiler-rt/trunk/test/tsan/Darwin/gcd-apply.mm Wed Sep 14 08:53:06 2016
@@ -17,6 +17,10 @@ void callback(void *context, size_t i) {
 int main(int argc, const char *argv[]) {
   barrier_init(&barrier, 2);
   fprintf(stderr, "start\n");
+
+  // Warm up GCD (workaround for macOS Sierra where dispatch_apply might run single-threaded).
+  dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });
+
   dispatch_queue_t q = dispatch_queue_create("my.queue", DISPATCH_QUEUE_CONCURRENT);
 
   global = 42;




More information about the llvm-commits mailing list