[compiler-rt] r253583 - [tsan] Replace new/delete with a local variable in ThreadSpecificDtors unit test

Kuba Brecka via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 19 09:50:08 PST 2015


Author: kuba.brecka
Date: Thu Nov 19 11:50:07 2015
New Revision: 253583

URL: http://llvm.org/viewvc/llvm-project?rev=253583&view=rev
Log:
[tsan] Replace new/delete with a local variable in ThreadSpecificDtors unit test

On OS X, this unit test (ThreadSpecificDtors) fails, because the new and delete operators actually call the overridden operators, which end up using TLVs and crash. Since C++'s new and delete is not important in this test, let's just replace them with a local variable. This fixes the test on OS X.

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


Modified:
    compiler-rt/trunk/lib/tsan/tests/rtl/tsan_posix.cc

Modified: compiler-rt/trunk/lib/tsan/tests/rtl/tsan_posix.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/tests/rtl/tsan_posix.cc?rev=253583&r1=253582&r2=253583&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/tests/rtl/tsan_posix.cc (original)
+++ compiler-rt/trunk/lib/tsan/tests/rtl/tsan_posix.cc Thu Nov 19 11:50:07 2015
@@ -35,7 +35,7 @@ static void thread_secific_dtor(void *v)
   __tsan_write4(&k->cnt);
   EXPECT_EQ(pthread_mutex_unlock(k->mtx), 0);
   if (k->val == 42) {
-    delete k;
+    // Okay.
   } else if (k->val == 43 || k->val == 44) {
     k->val--;
     EXPECT_EQ(pthread_setspecific(k->key, k), 0);
@@ -57,14 +57,13 @@ TEST(Posix, ThreadSpecificDtors) {
   pthread_mutex_t mtx;
   EXPECT_EQ(pthread_mutex_init(&mtx, 0), 0);
   pthread_t th[3];
-  thread_key *k[3];
-  k[0] = new thread_key(key, &mtx, 42, &cnt);
-  k[1] = new thread_key(key, &mtx, 43, &cnt);
-  k[2] = new thread_key(key, &mtx, 44, &cnt);
-  EXPECT_EQ(pthread_create(&th[0], 0, dtors_thread, k[0]), 0);
-  EXPECT_EQ(pthread_create(&th[1], 0, dtors_thread, k[1]), 0);
+  thread_key k1 = thread_key(key, &mtx, 42, &cnt);
+  thread_key k2 = thread_key(key, &mtx, 43, &cnt);
+  thread_key k3 = thread_key(key, &mtx, 44, &cnt);
+  EXPECT_EQ(pthread_create(&th[0], 0, dtors_thread, &k1), 0);
+  EXPECT_EQ(pthread_create(&th[1], 0, dtors_thread, &k2), 0);
   EXPECT_EQ(pthread_join(th[0], 0), 0);
-  EXPECT_EQ(pthread_create(&th[2], 0, dtors_thread, k[2]), 0);
+  EXPECT_EQ(pthread_create(&th[2], 0, dtors_thread, &k3), 0);
   EXPECT_EQ(pthread_join(th[1], 0), 0);
   EXPECT_EQ(pthread_join(th[2], 0), 0);
   EXPECT_EQ(pthread_key_delete(key), 0);




More information about the llvm-commits mailing list