[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