summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-07-12 12:25:03 +0000
committerDmitry Vyukov <dvyukov@google.com>2017-07-12 12:25:03 +0000
commit38ecb5de33e6ce0e9a2d60f3571e268801eda8b3 (patch)
tree60412d7999e7a3336d5524d02f610846a9ae4d3c
parent9cd8edacd314ca4374ab2e45ea61202f7cd9768b (diff)
downloadcompiler-rt-38ecb5de33e6ce0e9a2d60f3571e268801eda8b3.tar.gz
tsan: add another test for clock growth
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@307777 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/tsan/tests/unit/tsan_clock_test.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/tsan/tests/unit/tsan_clock_test.cc b/lib/tsan/tests/unit/tsan_clock_test.cc
index 83e25fb5a..34850faaa 100644
--- a/lib/tsan/tests/unit/tsan_clock_test.cc
+++ b/lib/tsan/tests/unit/tsan_clock_test.cc
@@ -212,6 +212,42 @@ TEST(Clock, Growth) {
}
}
+TEST(Clock, Growth2) {
+ // Test clock growth for every pair of sizes:
+ const uptr sizes[] = {0, 1, 2, 30, 61, 62, 63, 64, 65, 66, 100, 124, 125, 126,
+ 127, 128, 129, 130, 188, 189, 190, 191, 192, 193, 254, 255};
+ const uptr n = sizeof(sizes) / sizeof(sizes[0]);
+ for (uptr fi = 0; fi < n; fi++) {
+ for (uptr ti = fi + 1; ti < n; ti++) {
+ const uptr from = sizes[fi];
+ const uptr to = sizes[ti];
+ SyncClock sync;
+ ThreadClock vector(0);
+ for (uptr i = 0; i < from; i++)
+ vector.set(i, i + 1);
+ if (from != 0)
+ vector.release(&cache, &sync);
+ ASSERT_EQ(sync.size(), from);
+ for (uptr i = 0; i < from; i++)
+ ASSERT_EQ(sync.get(i), i + 1);
+ for (uptr i = 0; i < to; i++)
+ vector.set(i, i + 1);
+ vector.release(&cache, &sync);
+ ASSERT_EQ(sync.size(), to);
+ for (uptr i = 0; i < to; i++)
+ ASSERT_EQ(sync.get(i), i + 1);
+ vector.set(to + 1, to + 1);
+ vector.release(&cache, &sync);
+ ASSERT_EQ(sync.size(), to + 2);
+ for (uptr i = 0; i < to; i++)
+ ASSERT_EQ(sync.get(i), i + 1);
+ ASSERT_EQ(sync.get(to), 0U);
+ ASSERT_EQ(sync.get(to + 1), to + 1);
+ sync.Reset(&cache);
+ }
+ }
+}
+
const uptr kThreads = 4;
const uptr kClocks = 4;