| set(LLVM_LINK_COMPONENTS |
| Analysis |
| AsmParser |
| Core |
| Passes |
| Support |
| TargetParser |
| TransformUtils |
| IPO |
| ) |
| |
| set(ANALYSIS_TEST_SOURCES |
| AliasAnalysisTest.cpp |
| AliasSetTrackerTest.cpp |
| AssumeBundleQueriesTest.cpp |
| BasicAliasAnalysisTest.cpp |
| BlockFrequencyInfoTest.cpp |
| BranchProbabilityInfoTest.cpp |
| CallGraphTest.cpp |
| CaptureTrackingTest.cpp |
| CFGTest.cpp |
| CGSCCPassManagerTest.cpp |
| ConstraintSystemTest.cpp |
| DDGTest.cpp |
| DivergenceAnalysisTest.cpp |
| DomTreeUpdaterTest.cpp |
| GlobalsModRefTest.cpp |
| FunctionPropertiesAnalysisTest.cpp |
| InlineCostTest.cpp |
| IRSimilarityIdentifierTest.cpp |
| IVDescriptorsTest.cpp |
| LazyCallGraphTest.cpp |
| LoadsTest.cpp |
| LoopInfoTest.cpp |
| LoopNestTest.cpp |
| MemoryBuiltinsTest.cpp |
| MemoryProfileInfoTest.cpp |
| MemorySSATest.cpp |
| MLModelRunnerTest.cpp |
| PhiValuesTest.cpp |
| PluginInlineAdvisorAnalysisTest.cpp |
| ProfileSummaryInfoTest.cpp |
| ScalarEvolutionTest.cpp |
| VectorFunctionABITest.cpp |
| SparsePropagation.cpp |
| TargetLibraryInfoTest.cpp |
| TensorSpecTest.cpp |
| TBAATest.cpp |
| UnrollAnalyzerTest.cpp |
| ValueLatticeTest.cpp |
| ValueTrackingTest.cpp |
| VectorUtilsTest.cpp |
| ) |
| |
| # The unit tests target does not use InlineAdvisorPlugin.cpp |
| # so if not added to LLVM_OPTIONAL_SOURCES, FileCheck will |
| # complain about unused file. |
| set(LLVM_OPTIONAL_SOURCES InlineAdvisorPlugin.cpp) |
| |
| set(MLGO_TESTS TFUtilsTest.cpp) |
| if (LLVM_HAVE_TFLITE) |
| LIST(APPEND ANALYSIS_TEST_SOURCES ${MLGO_TESTS}) |
| else() |
| LIST(APPEND LLVM_OPTIONAL_SOURCES ${MLGO_TESTS}) |
| endif() |
| |
| add_llvm_unittest_with_input_files(AnalysisTests |
| ${ANALYSIS_TEST_SOURCES} |
| ) |
| |
| target_link_libraries(AnalysisTests PRIVATE LLVMTestingSupport) |
| |
| # The advisor plugin expects to not link against the Analysis, Support and Core |
| # libraries, but expects them to exist in the process loading the plugin. This |
| # doesn't work with DLLs on Windows (where a shared library can't have undefined |
| # references), so just skip this testcase on Windows. |
| if (NOT WIN32) |
| # On AIX, enable run-time linking to allow symbols from the plugins shared |
| # objects to be properly bound. |
| if(CMAKE_SYSTEM_NAME STREQUAL "AIX") |
| set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl") |
| endif() |
| |
| # This plugin is built as a stand-alone plugin, so since we don't use the |
| # ANALYSIS_TEST_SOURCES files, we have to add them to LLVM_OPTIONAL_SOURCES |
| # so that FileCheck doesn't complain about unsued files. |
| LIST(APPEND LLVM_OPTIONAL_SOURCES ${ANALYSIS_TEST_SOURCES}) |
| |
| unset(LLVM_LINK_COMPONENTS) |
| add_llvm_library(InlineAdvisorPlugin MODULE BUILDTREE_ONLY InlineAdvisorPlugin.cpp) |
| # Put PLUGIN next to the unit test executable. |
| set_output_directory(InlineAdvisorPlugin |
| BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} |
| LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} |
| ) |
| set_target_properties(InlineAdvisorPlugin PROPERTIES FOLDER "Tests") |
| |
| export_executable_symbols_for_plugins(AnalysisTests) |
| # The plugin depends on some of the output files of intrinsics_gen, so make sure |
| # it is built before the plugin. |
| add_dependencies(InlineAdvisorPlugin intrinsics_gen) |
| add_dependencies(AnalysisTests InlineAdvisorPlugin) |
| set_property(TARGET InlineAdvisorPlugin PROPERTY FOLDER "Tests/UnitTests/AnalysisTests") |
| endif() |