llvm-project/mlir/lib/IR/CMakeLists.txt
Matthias Springer a3d41879ec
[mlir][ODS] Optionally generate public C++ functions for type constraints (#104577)
Add `gen-type-constraint-decls` and `gen-type-constraint-defs`, which
generate public C++ functions for type constraints. The name of the C++
function is specified in the `cppFunctionName` field.

Type constraints are typically used for op/type/attribute verification.
They are also sometimes called from builders and transformations. Until
now, this required duplicating the check in C++.

Note: This commit just adds the option for type constraints, but
attribute constraints could be supported in the same way.

Alternatives considered:
1. The C++ functions could also be generated as part of
`gen-typedef-decls/defs`, but that can be confusing because type
constraints may rely on type definitions from multiple `.td` files.
`#include`s could cause duplicate definitions of the same type
constraint.
2. The C++ functions could also be generated as static member functions
of dialects, but they don't really belong to a dialect. (Because they
may rely on type definitions from multiple dialects.)
2024-08-21 08:44:54 +02:00

73 lines
1.4 KiB
CMake

if(MLIR_ENABLE_PDL_IN_PATTERNMATCH)
set(pdl_src
PDL/PDLPatternMatch.cpp
)
endif()
add_mlir_library(MLIRIR
AffineExpr.cpp
AffineMap.cpp
AsmPrinter.cpp
Attributes.cpp
AttrTypeSubElements.cpp
Block.cpp
Builders.cpp
BuiltinAttributeInterfaces.cpp
BuiltinAttributes.cpp
BuiltinDialect.cpp
BuiltinDialectBytecode.cpp
BuiltinTypes.cpp
BuiltinTypeInterfaces.cpp
Diagnostics.cpp
Dialect.cpp
DialectResourceBlobManager.cpp
Dominance.cpp
ExtensibleDialect.cpp
IntegerSet.cpp
Location.cpp
MLIRContext.cpp
ODSSupport.cpp
Operation.cpp
OperationSupport.cpp
PatternMatch.cpp
Region.cpp
RegionKindInterface.cpp
SymbolTable.cpp
TensorEncoding.cpp
Types.cpp
TypeRange.cpp
TypeUtilities.cpp
Unit.cpp
Value.cpp
ValueRange.cpp
Verifier.cpp
Visitors.cpp
${pdl_src}
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
DEPENDS
MLIRBuiltinAttributesIncGen
MLIRBuiltinAttributeInterfacesIncGen
MLIRBuiltinDialectBytecodeIncGen
MLIRBuiltinDialectIncGen
MLIRBuiltinLocationAttributesIncGen
MLIRBuiltinOpsIncGen
MLIRBuiltinTypesIncGen
MLIRBuiltinTypeConstraintsIncGen
MLIRBuiltinTypeInterfacesIncGen
MLIRCallInterfacesIncGen
MLIRCastInterfacesIncGen
MLIRDataLayoutInterfacesIncGen
MLIROpAsmInterfaceIncGen
MLIRRegionKindInterfaceIncGen
MLIRSideEffectInterfacesIncGen
MLIRSymbolInterfacesIncGen
MLIRTensorEncodingIncGen
LINK_LIBS PUBLIC
MLIRSupport
)