Files
Andrea Gussoni 6a56557177 DetectABI: inline helpers
Inline `revng_inline` helper calls into each outlined stub which is
consumed by `analyzeABI`, so the analysis can observe the reads and
writes the helper performs on the floating point registers.

The helper module is linked only once at the beginning of the pass, to
avoid double linking issues.
2026-06-19 15:35:18 +02:00

68 lines
1.6 KiB
CMake

#
# This file is distributed under the MIT License. See LICENSE.md for details.
#
# Define revngEarlyFunctionAnalysis library
revng_add_analyses_library_internal(
revngEarlyFunctionAnalysis
AAWriterPass.cpp
AnalyzeRegisterUsage.cpp
AttachDebugInfo.cpp
CFGAnalyzer.cpp
CollectCFG.cpp
CollectFunctionsFromCalleesPass.cpp
CollectFunctionsFromUnusedAddressesPass.cpp
ControlFlowGraph.cpp
ControlFlowGraphCache.cpp
DetectABI.cpp
FunctionSummaryOracle.cpp
IndirectBranchInfoPrinterPass.cpp
Outliner.cpp
PromoteGlobalToLocalVars.cpp
SegregateDirectStackAccesses.cpp
${GENERATED_IMPLS})
llvm_map_components_to_libnames(
LLVM_LIBRARIES
Analysis
TransformUtils
ScalarOpts
InstCombine
Passes
CodeGen)
target_link_libraries(
revngEarlyFunctionAnalysis
revngBasicAnalyses
revngABI
revngInlineHelpers
revngSupport
revngModel
revngPipes
${LLVM_LIBRARIES})
# Header files containing efa YAML must be added here
set(EFA_HEADERS_DIR "${CMAKE_SOURCE_DIR}/include/revng/EarlyFunctionAnalysis")
set(OUTPUT_DIR
"${CMAKE_BINARY_DIR}/include/revng/EarlyFunctionAnalysis/Generated")
set(SCHEMA_PATH
"${CMAKE_SOURCE_DIR}/include/revng/EarlyFunctionAnalysis/efa-schema.yml")
target_tuple_tree_generator(
revngEarlyFunctionAnalysis
INSTALL
HEADER_DIRECTORY
EarlyFunctionAnalysis
NAMESPACE
efa
SCHEMA_PATH
${SCHEMA_PATH}
SEPARATE_STRING_TYPES
"BasicBlockID"
"MetaAddress"
SCALAR_TYPES
"BasicBlockID"
"MetaAddress"
"model::FunctionAttribute::Values")
install(DIRECTORY ${OUTPUT_DIR} DESTINATION include/revng/EarlyFunctionAnalysis)