Skip to content

Commit 35110b7

Browse files
authored
[mlir] Consistently add TableGen generated files as deps to mlir-headers/mlir-generic-headers CMake targets (llvm#155474)
Tool targets like `mlir-opt` rely on the `mlir-headers` or `mlir-generic-headers` targets to run first to generate headers. However, many of the `IncGen` targets are not specified as dependencies of the header targets in CMake, which causes spurious build failures when using a high number of parallel build jobs. Thus, this commit introduces a pair of new CMake macros `add_mlir_dialect_tablegen_target` and `add_mlir_generic_tablegen_target` to `AddMLIR.cmake`, which can be used in place of `add_public_tablegen_target` to ensure (by convention) that `IncGen` targets are added to the `mlir-headers` (resp. `mlir-generic-headers`) target dependencies. Most uses of `add_public_tablegen_target` in the dialects have been refactored to use the new macros.
1 parent 9cca295 commit 35110b7

File tree

89 files changed

+177
-222
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+177
-222
lines changed

mlir/cmake/modules/AddMLIR.cmake

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,7 @@ function(add_mlir_dialect dialect dialect_namespace)
174174
mlir_tablegen(${dialect}Types.cpp.inc -gen-typedef-defs -typedefs-dialect=${dialect_namespace})
175175
mlir_tablegen(${dialect}Dialect.h.inc -gen-dialect-decls -dialect=${dialect_namespace})
176176
mlir_tablegen(${dialect}Dialect.cpp.inc -gen-dialect-defs -dialect=${dialect_namespace})
177-
add_public_tablegen_target(MLIR${dialect}IncGen)
178-
add_dependencies(mlir-headers MLIR${dialect}IncGen)
177+
add_mlir_dialect_tablegen_target(MLIR${dialect}IncGen)
179178
endfunction()
180179

181180
# Declare sharded dialect operation declarations and definitions
@@ -190,7 +189,7 @@ function(add_sharded_ops ops_target shard_count)
190189
tablegen(MLIR_SRC_SHARDER ${SHARDED_SRC} -op-shard-index=${index})
191190
set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${SHARDED_SRC})
192191
endforeach()
193-
add_public_tablegen_target(MLIR${ops_target}ShardGen)
192+
add_mlir_dialect_tablegen_target(MLIR${ops_target}ShardGen)
194193
set(SHARDED_SRCS ${SHARDED_SRCS} PARENT_SCOPE)
195194
endfunction()
196195

@@ -199,10 +198,23 @@ function(add_mlir_interface interface)
199198
set(LLVM_TARGET_DEFINITIONS ${interface}.td)
200199
mlir_tablegen(${interface}.h.inc -gen-op-interface-decls)
201200
mlir_tablegen(${interface}.cpp.inc -gen-op-interface-defs)
202-
add_public_tablegen_target(MLIR${interface}IncGen)
203-
add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
201+
add_mlir_generic_tablegen_target(MLIR${interface}IncGen)
204202
endfunction()
205203

204+
# Add a dialect-specific tablegen target that generates headers in the include directory.
205+
# In most cases, this is what should be used after invoking `mlir_tablegen`.
206+
macro(add_mlir_dialect_tablegen_target target)
207+
add_public_tablegen_target(${target})
208+
add_dependencies(mlir-headers ${target})
209+
endmacro()
210+
211+
# Add a dialect-independent tablegen target that generates headers in the include directory.
212+
# Generally this is used for files outside of the Dialects/ folder, and also for interfaces
213+
# that do not depend on dialect-specific headers.
214+
macro(add_mlir_generic_tablegen_target target)
215+
add_public_tablegen_target(${target})
216+
add_dependencies(mlir-generic-headers ${target})
217+
endmacro()
206218

207219
# Generate Documentation
208220
function(add_mlir_doc doc_filename output_file output_directory command)

mlir/include/mlir/Conversion/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
33
mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
44
mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
55
mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
6-
add_public_tablegen_target(MLIRConversionPassIncGen)
6+
add_mlir_generic_tablegen_target(MLIRConversionPassIncGen)
77

88
add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
99

mlir/include/mlir/Conversion/ConvertToLLVM/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ mlir_tablegen(ToLLVMAttrInterface.h.inc -gen-attr-interface-decls)
33
mlir_tablegen(ToLLVMAttrInterface.cpp.inc -gen-attr-interface-defs)
44
mlir_tablegen(ToLLVMOpInterface.h.inc -gen-op-interface-decls)
55
mlir_tablegen(ToLLVMOpInterface.cpp.inc -gen-op-interface-defs)
6-
add_public_tablegen_target(MLIRConvertToLLVMInterfaceIncGen)
7-
add_dependencies(mlir-generic-headers MLIRConvertToLLVMInterfaceIncGen)
6+
add_mlir_generic_tablegen_target(MLIRConvertToLLVMInterfaceIncGen)

mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
44
set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
55
mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
66
mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
7-
add_public_tablegen_target(MLIRAMDGPUEnumsGen)
7+
add_mlir_dialect_tablegen_target(MLIRAMDGPUEnumsGen)
88

99
set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
1010
mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
1111
mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
12-
add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
12+
add_mlir_dialect_tablegen_target(MLIRAMDGPUAttributesIncGen)
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
set(LLVM_TARGET_DEFINITIONS Passes.td)
22
mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
3-
add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
4-
add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
3+
add_mlir_dialect_tablegen_target(MLIRAMDGPUTransformsIncGen)
54

65
add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)

mlir/include/mlir/Dialect/Affine/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
33

44
set(LLVM_TARGET_DEFINITIONS Passes.td)
55
mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
6-
add_public_tablegen_target(MLIRAffinePassIncGen)
6+
add_mlir_dialect_tablegen_target(MLIRAffinePassIncGen)
77

88
add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
22
mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
33
mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
4-
add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
4+
add_mlir_dialect_tablegen_target(MLIRAffineTransformOpsIncGen)
55

66
add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(LLVM_TARGET_DEFINITIONS Passes.td)
22
mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
3-
add_public_tablegen_target(MLIRArithTransformsIncGen)
3+
add_mlir_dialect_tablegen_target(MLIRArithTransformsIncGen)
44

55
add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)

mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
33

44
set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
55
mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
6-
add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
6+
add_mlir_dialect_tablegen_target(MLIRArmNeonConversionsIncGen)
77

88
add_subdirectory(TransformOps)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
22
mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
33
mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
4-
add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
4+
add_mlir_dialect_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
55

66
add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)

0 commit comments

Comments
 (0)