diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2017-07-12 12:25:03 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2017-07-12 12:25:03 +0000 |
commit | 38ecb5de33e6ce0e9a2d60f3571e268801eda8b3 (patch) | |
tree | 60412d7999e7a3336d5524d02f610846a9ae4d3c | |
parent | 9cd8edacd314ca4374ab2e45ea61202f7cd9768b (diff) | |
download | compiler-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.cc | 36 |
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; |