Skip to content

Commit 4da745a

Browse files
authored
[BOLT] Fix unit test failures with LLVM_LINK_LLVM_DYLIB=ON (#152190)
When LLVM_LINK_LLVM_DYLIB is ON, `check-bolt` target reports unit test failures: BOLT-Unit :: Core/./CoreTests/failed_to_discover_tests_from_gtest BOLT-Unit :: Profile/./ProfileTests/failed_to_discover_tests_from_gtest The reason is that when llvm-lit runs a unit-test executable: /path/to/CoreTests --gtest_list_tests '--gtest_filter=-*DISABLED_*' an assertion is triggered with the following message: LLVM ERROR: Option 'default' already exists! This assertion triggers when the initializer of defaultListDAGScheduler defined at SelectionDAGISel.cpp:219 is called as a statically-linked function after already being called during the initialization of libLLVM. The issue can be traced down to LLVMTestingSupport library which depends on libLLVM as neither COMPONENT_LIB nor DISABLE_LLVM_LINK_LLVM_DYLIB is specified in a call to `add_llvm_library(LLVMTestingSupport ...)`. Specifying DISABLE_LLVM_LINK_LLVM_DYLIB for LLVMTestingSupport makes Clang unit test fail and COMPONENT_LIB is probably inappropriate for a testing-specific library, thus as a workaround, added Error.cpp source from LLVMTestingSupport directly to the list of source files of CoreTests target (as it depends on `llvm::detail::TakeError(llvm::Error)`) and removed LLVMTestingSupport from the list of dependencies of ProfileTests.
1 parent 6ce68d3 commit 4da745a

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

bolt/unittests/Core/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ add_bolt_unittest(CoreTests
1111
MemoryMaps.cpp
1212
DynoStats.cpp
1313

14+
# FIXME CoreTests uses `llvm::detail::TakeError(llvm::Error)`, but linking
15+
# to LLVMTestingSupport introduces a transitive dependency on the
16+
# dynamic LLVM library when LLVM_LINK_LLVM_DYLIB is ON.
17+
${LLVM_MAIN_SRC_DIR}/lib/Testing/Support/Error.cpp
18+
1419
DISABLE_LLVM_LINK_LLVM_DYLIB
1520
)
1621

@@ -20,7 +25,6 @@ target_link_libraries(CoreTests
2025
LLVMBOLTRewrite
2126
LLVMBOLTProfile
2227
LLVMBOLTUtils
23-
LLVMTestingSupport
2428
)
2529

2630
foreach (tgt ${BOLT_TARGETS_TO_BUILD})

bolt/unittests/Profile/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ target_link_libraries(ProfileTests
1616
LLVMBOLTCore
1717
LLVMBOLTProfile
1818
LLVMTargetParser
19-
LLVMTestingSupport
2019
)
2120

2221
foreach (tgt ${BOLT_TARGETS_TO_BUILD})

0 commit comments

Comments
 (0)