Skip to content

Commit 6959f31

Browse files
committed
[mlir][core] Move InitAll*** implementation into static library.
`InitAll***` functions are used by `opt`-style tools to init all MLIR dialects/passes/extensions. Currently they are implemeted as inline functions and include essentially the entire MLIR header tree. Each file which includes this header (~10 currently) takes 10+ sec and multiple GB of ram to compile (tested with clang-19), which limits amount of parallel compiler jobs which can be run. Also, flang just casually includes this file into one of its headers. Move the actual registration code to the static libarary, so it's compiled only once.
1 parent 4745637 commit 6959f31

File tree

30 files changed

+478
-463
lines changed

30 files changed

+478
-463
lines changed

clang/tools/cir-lsp-server/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
2-
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
3-
41
include_directories(${LLVM_MAIN_SRC_DIR}/../mlir/include)
52
include_directories(${CMAKE_BINARY_DIR}/tools/mlir/include)
63

74
set(LIBS
8-
${dialect_libs}
9-
${conversion_libs}
105
${test_libs}
116
clangCIR
127
clangCIRLoweringDirectToLLVM
@@ -21,6 +16,7 @@ set(LIBS
2116
MLIRTransformUtils
2217
MLIRSupport
2318
MLIRIR
19+
MLIRRegisterEverything
2420
)
2521

2622
add_mlir_tool(cir-lsp-server

flang/include/flang/Optimizer/Support/InitFIR.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,20 @@
2020
#include "flang/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.h"
2121
#include "flang/Optimizer/OpenMP/Support/RegisterOpenMPExtensions.h"
2222
#include "mlir/Conversion/Passes.h"
23+
#include "mlir/Dialect/Affine/IR/AffineOps.h"
2324
#include "mlir/Dialect/Affine/Passes.h"
2425
#include "mlir/Dialect/Complex/IR/Complex.h"
26+
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
27+
#include "mlir/Dialect/DLTI/DLTI.h"
2528
#include "mlir/Dialect/Func/Extensions/InlinerExtension.h"
29+
#include "mlir/Dialect/Func/IR/FuncOps.h"
2630
#include "mlir/Dialect/Index/IR/IndexDialect.h"
2731
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
32+
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
33+
#include "mlir/Dialect/Math/IR/Math.h"
34+
#include "mlir/Dialect/OpenACC/OpenACC.h"
2835
#include "mlir/Dialect/OpenACC/Transforms/Passes.h"
36+
#include "mlir/Dialect/SCF/IR/SCF.h"
2937
#include "mlir/Dialect/SCF/Transforms/Passes.h"
3038
#include "mlir/InitAllDialects.h"
3139
#include "mlir/Pass/Pass.h"

flang/lib/Optimizer/Support/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
2-
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
3-
41
add_flang_library(FIRSupport
52
DataLayout.cpp
63
InitFIR.cpp
@@ -23,12 +20,11 @@ add_flang_library(FIRSupport
2320
${extension_libs}
2421

2522
MLIR_LIBS
26-
${dialect_libs}
27-
${extension_libs}
2823
MLIRBuiltinToLLVMIRTranslation
2924
MLIROpenACCToLLVMIRTranslation
3025
MLIROpenMPToLLVMIRTranslation
3126
MLIRLLVMToLLVMIRTranslation
3227
MLIRTargetLLVMIRExport
3328
MLIRTargetLLVMIRImport
29+
MLIRRegisterEverything
3430
)

mlir/examples/standalone/standalone-opt/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
2-
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
31
set(LIBS
4-
${dialect_libs}
5-
${conversion_libs}
62
MLIRArithDialect
73
MLIROptLib
84
MLIRStandalone
5+
MLIRRegisterEverything
96
)
107
add_llvm_executable(standalone-opt standalone-opt.cpp)
118

mlir/examples/standalone/standalone-opt/standalone-opt.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include "mlir/Dialect/Arith/IR/Arith.h"
10+
#include "mlir/Dialect/Func/IR/FuncOps.h"
911
#include "mlir/IR/MLIRContext.h"
1012
#include "mlir/InitAllDialects.h"
1113
#include "mlir/InitAllPasses.h"

mlir/examples/toy/Ch5/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,9 @@ add_toy_chapter(toyc-ch5
2727

2828
include_directories(${CMAKE_CURRENT_BINARY_DIR})
2929
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
30-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
31-
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
3230
target_link_libraries(toyc-ch5
3331
PRIVATE
34-
${dialect_libs}
35-
${extension_libs}
32+
MLIRRegisterEverything
3633
MLIRAnalysis
3734
MLIRCallInterfaces
3835
MLIRCastInterfaces

mlir/examples/toy/Ch5/toyc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
14+
#include "mlir/Dialect/Func/IR/FuncOps.h"
1415
#include "mlir/IR/Diagnostics.h"
1516
#include "toy/AST.h"
1617
#include "toy/Dialect.h"

mlir/examples/toy/Ch6/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,9 @@ add_toy_chapter(toyc-ch6
3737

3838
include_directories(${CMAKE_CURRENT_BINARY_DIR})
3939
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
40-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
41-
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
42-
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
4340
target_link_libraries(toyc-ch6
4441
PRIVATE
45-
${dialect_libs}
46-
${conversion_libs}
47-
${extension_libs}
42+
MLIRRegisterEverything
4843
MLIRAnalysis
4944
MLIRBuiltinToLLVMIRTranslation
5045
MLIRCallInterfaces

mlir/examples/toy/Ch6/toyc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
14+
#include "mlir/Dialect/Func/IR/FuncOps.h"
1415
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
1516
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
1617
#include "toy/AST.h"

mlir/examples/toy/Ch7/CMakeLists.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,9 @@ add_toy_chapter(toyc-ch7
3636

3737
include_directories(${CMAKE_CURRENT_BINARY_DIR})
3838
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
39-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
40-
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
41-
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
4239
target_link_libraries(toyc-ch7
4340
PRIVATE
44-
${dialect_libs}
45-
${conversion_libs}
46-
${extension_libs}
41+
MLIRRegisterEverything
4742
MLIRAnalysis
4843
MLIRBuiltinToLLVMIRTranslation
4944
MLIRCallInterfaces

0 commit comments

Comments
 (0)