@@ -47,14 +47,6 @@ class ThreadPoolTest : public testing::Test {
47
47
return false ;
48
48
}
49
49
50
- bool isWindows () {
51
- // FIXME: Skip some tests below on non-Windows because multi-socket systems
52
- // were not fully tested on Unix yet, and llvm::get_thread_affinity_mask()
53
- // isn't implemented for Unix.
54
- Triple Host (Triple::normalize (sys::getProcessTriple ()));
55
- return Host.isOSWindows ();
56
- }
57
-
58
50
ThreadPoolTest () {
59
51
// Add unsupported configuration here, example:
60
52
// UnsupportedArchs.push_back(Triple::x86_64);
@@ -94,12 +86,6 @@ class ThreadPoolTest : public testing::Test {
94
86
return ; \
95
87
} while (0 );
96
88
97
- #define SKIP_NON_WINDOWS () \
98
- do { \
99
- if (!isWindows ()) \
100
- return ; \
101
- } while (0 );
102
-
103
89
TEST_F (ThreadPoolTest, AsyncBarrier) {
104
90
CHECK_UNSUPPORTED ();
105
91
// test that async & barrier work together properly.
@@ -185,6 +171,11 @@ TEST_F(ThreadPoolTest, PoolDestruction) {
185
171
186
172
#if LLVM_ENABLE_THREADS == 1
187
173
174
+ // FIXME: Skip some tests below on non-Windows because multi-socket systems
175
+ // were not fully tested on Unix yet, and llvm::get_thread_affinity_mask()
176
+ // isn't implemented for Unix (need AffinityMask in Support/Unix/Program.inc).
177
+ #ifdef _WIN32
178
+
188
179
std::vector<llvm::BitVector>
189
180
ThreadPoolTest::RunOnAllSockets (ThreadPoolStrategy S) {
190
181
llvm::SetVector<llvm::BitVector> ThreadsUsed;
@@ -221,14 +212,12 @@ ThreadPoolTest::RunOnAllSockets(ThreadPoolStrategy S) {
221
212
222
213
TEST_F (ThreadPoolTest, AllThreads_UseAllRessources) {
223
214
CHECK_UNSUPPORTED ();
224
- SKIP_NON_WINDOWS ();
225
215
std::vector<llvm::BitVector> ThreadsUsed = RunOnAllSockets ({});
226
216
ASSERT_EQ (llvm::get_cpus (), ThreadsUsed.size ());
227
217
}
228
218
229
219
TEST_F (ThreadPoolTest, AllThreads_OneThreadPerCore) {
230
220
CHECK_UNSUPPORTED ();
231
- SKIP_NON_WINDOWS ();
232
221
std::vector<llvm::BitVector> ThreadsUsed =
233
222
RunOnAllSockets (llvm::heavyweight_hardware_concurrency ());
234
223
ASSERT_EQ (llvm::get_cpus (), ThreadsUsed.size ());
@@ -247,9 +236,6 @@ static cl::opt<std::string> ThreadPoolTestStringArg1("thread-pool-string-arg1");
247
236
TEST_F (ThreadPoolTest, AffinityMask) {
248
237
CHECK_UNSUPPORTED ();
249
238
250
- // FIXME: implement AffinityMask in Support/Unix/Program.inc
251
- SKIP_NON_WINDOWS ();
252
-
253
239
// Skip this test if less than 4 threads are available.
254
240
if (llvm::hardware_concurrency ().compute_thread_count () < 4 )
255
241
return ;
@@ -258,8 +244,10 @@ TEST_F(ThreadPoolTest, AffinityMask) {
258
244
if (getenv (" LLVM_THREADPOOL_AFFINITYMASK" )) {
259
245
std::vector<llvm::BitVector> ThreadsUsed = RunOnAllSockets ({});
260
246
// Ensure the threads only ran on CPUs 0-3.
247
+ // NOTE: Don't use ASSERT* here because this runs in a subprocess,
248
+ // and will show up as un-executed in the parent.
261
249
for (auto &It : ThreadsUsed)
262
- ASSERT_LT (It.getData ().front (), 16UL );
250
+ assert (It.getData ().front () < 16UL );
263
251
return ;
264
252
}
265
253
std::string Executable =
@@ -280,4 +268,5 @@ TEST_F(ThreadPoolTest, AffinityMask) {
280
268
ASSERT_EQ (0 , Ret);
281
269
}
282
270
271
+ #endif // #ifdef _WIN32
283
272
#endif // #if LLVM_ENABLE_THREADS == 1
0 commit comments