Skip to content

Commit ace42cf

Browse files
authored
[mlir][core] Move InitAll*** implementation into static library. (#150805)
`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 includes this file into one of its headers. Move the actual registration code to the static library, so it's compiled only once. Discourse thread https://discourse.llvm.org/t/rfc-moving-initall-implementation-into-static-library/87559
1 parent 76bebb5 commit ace42cf

File tree

31 files changed

+531
-480
lines changed

31 files changed

+531
-480
lines changed

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
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
13-
MLIRCIR
148
MLIRAffineAnalysis
159
MLIRAnalysis
10+
MLIRCIR
1611
MLIRDialect
12+
MLIRIR
1713
MLIRLspServerLib
1814
MLIRParser
1915
MLIRPass
20-
MLIRTransforms
21-
MLIRTransformUtils
16+
MLIRRegisterAllDialects
17+
MLIRRegisterAllPasses
2218
MLIRSupport
23-
MLIRIR
19+
MLIRTransformUtils
20+
MLIRTransforms
2421
)
2522

2623
add_mlir_tool(cir-lsp-server

clang/tools/cir-opt/cir-opt.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
#include "mlir/Dialect/Func/IR/FuncOps.h"
1818
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
1919
#include "mlir/Dialect/MemRef/IR/MemRef.h"
20-
#include "mlir/InitAllPasses.h"
20+
#include "mlir/IR/BuiltinDialect.h"
2121
#include "mlir/Pass/PassManager.h"
2222
#include "mlir/Pass/PassOptions.h"
2323
#include "mlir/Pass/PassRegistry.h"
2424
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
25+
#include "mlir/Transforms/Passes.h"
2526
#include "clang/CIR/Dialect/IR/CIRDialect.h"
2627
#include "clang/CIR/Dialect/Passes.h"
2728
#include "clang/CIR/Passes.h"

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: 3 additions & 6 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,12 @@ add_flang_library(FIRSupport
2320
${extension_libs}
2421

2522
MLIR_LIBS
26-
${dialect_libs}
27-
${extension_libs}
2823
MLIRBuiltinToLLVMIRTranslation
24+
MLIRLLVMToLLVMIRTranslation
2925
MLIROpenACCToLLVMIRTranslation
3026
MLIROpenMPToLLVMIRTranslation
31-
MLIRLLVMToLLVMIRTranslation
27+
MLIRRegisterAllDialects
28+
MLIRRegisterAllExtensions
3229
MLIRTargetLLVMIRExport
3330
MLIRTargetLLVMIRImport
3431
)

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
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}
6-
MLIRArithDialect
7-
MLIROptLib
8-
MLIRStandalone
9-
)
2+
MLIRArithDialect
3+
MLIROptLib
4+
MLIRRegisterAllDialects
5+
MLIRRegisterAllPasses
6+
MLIRStandalone
7+
)
108
add_llvm_executable(standalone-opt standalone-opt.cpp)
119

1210
llvm_update_compile_flags(standalone-opt)

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: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,18 @@ 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}
3632
MLIRAnalysis
3733
MLIRCallInterfaces
3834
MLIRCastInterfaces
3935
MLIRFunctionInterfaces
4036
MLIRIR
4137
MLIRParser
4238
MLIRPass
39+
MLIRRegisterAllDialects
40+
MLIRRegisterAllExtensions
4341
MLIRSideEffectInterfaces
4442
MLIRSupport
45-
MLIRTransforms)
43+
MLIRTransforms
44+
)

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: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,8 @@ 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}
4842
MLIRAnalysis
4943
MLIRBuiltinToLLVMIRTranslation
5044
MLIRCallInterfaces
@@ -58,8 +52,11 @@ target_link_libraries(toyc-ch6
5852
MLIRMemRefDialect
5953
MLIRParser
6054
MLIRPass
55+
MLIRRegisterAllDialects
56+
MLIRRegisterAllExtensions
57+
MLIRRegisterAllPasses
6158
MLIRSideEffectInterfaces
6259
MLIRSupport
6360
MLIRTargetLLVMIRExport
6461
MLIRTransforms
65-
)
62+
)

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"

0 commit comments

Comments
 (0)