This patch supports the processing of dialect attributes attached to top-level module-type operations during MLIR-to-LLVMIR lowering. This approach modifies the `mlir::translateModuleToLLVMIR()` function to call `ModuleTranslation::convertOperation()` on the top-level operation, after its body has been lowered. This, in turn, will get the `LLVMTranslationDialectInterface` object associated to that operation's dialect before trying to use it for lowering prior to processing dialect attributes attached to the operation. Since there are no `LLVMTranslationDialectInterface`s for the builtin and GPU dialects, which define their own module-type operations, this patch also adds and registers them. The requirement for always calling `mlir::registerBuiltinDialectTranslation()` before any translation of MLIR to LLVM IR where builtin module operations are present is introduced. The purpose of these new translation interfaces is to succeed when processing module-type operations, allowing the lowering process to continue and to prevent the introduction of failures related to not finding such interfaces. Differential Revision: https://reviews.llvm.org/D145932
15 lines
267 B
CMake
15 lines
267 B
CMake
set(LLVM_LINK_COMPONENTS
|
|
nativecodegen
|
|
native
|
|
)
|
|
|
|
# Main API shared library.
|
|
add_mlir_upstream_c_api_library(MLIRCAPIExecutionEngine
|
|
ExecutionEngine.cpp
|
|
|
|
LINK_LIBS PUBLIC
|
|
MLIRBuiltinToLLVMIRTranslation
|
|
MLIRExecutionEngine
|
|
MLIRLLVMToLLVMIRTranslation
|
|
)
|